| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chapter 10 Job Tracking | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A job is a written description of some modification to be made to a source code set. A job might be a bug description, like "the system crashes when I press return", or it might be a system improvement request, like "please make the program run faster."
Whereas a job represents work that is intended, a changelist represents work actually done. Perforce's job tracking mechanism allows jobs to be linked to the changelists that implement the work requested by the job. A job can later be looked up to determine if and when it was fixed, which file revisions implemented the fix, and who fixed it. A job linked to a particular changelist is marked as completed when the changelist is submitted. Jobs perform no functions internally to Perforce; rather, they are provided as a method of keeping track of information such as what changes to the source are needed, which user is responsible for implementing the job, and which file revisions contain the implementation of the job. The type of information tracked by the jobs system can be customized; fields in the job form can be added, changed, and deleted by Perforce superusers.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Job Usage Overview | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There are five related but distinct aspects of using jobs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Creating and Editing Jobs using the Default Job Specification | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Jobs are created with the p4 job command. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sarah's Perforce server uses Perforce's default jobs specification. A bug in Elm's
filtering subsystem has been reported to Sarah, and she knows that Ed is responsible for
Elm filters. Sarah creates a new job with p4 job and fills in the resulting form as follows:
Sarah has filled in a description and has changed User: to edk. The default p4 job form's fields are:
| If p4 job is called with no parameters, a new job is created. The name that appears on the form is new, but this can be changed by the user to any desired string. If the Job: field is left as new, Perforce will assign the job the name jobN, where N is a sequentially-assigned six-digit number. Existing jobs can be edited with p4 job jobname. The owner and description can be changed arbitrarily; the status can be changed to any of the three valid status values open, closed, or suspended. If p4 job jobname is called with a non-existing jobname, a new job is created.
| Creating and Editing Jobs with Custom Job Specifications
A Perforce superuser can add and change fields within your server's jobs template with the p4 jobspec command. If this has been done, there may be additional fields in your p4 jobs form, and the names of the fields described above may have changed. At Perforce, our jobs look (in part) like this: |
|
Some of the fields have been set by the superuser to allow one of a set of values; for example, Priority: must be one of a, b, c, or unknown. The p4 job fields do not tell you what the valid values of a field are; this information is communicated to the user via the comments at the top of the job form, which are written by the superuser when editing the job specification. If you find the information in the comments for your jobs to be insufficient to enter jobs properly, please tell your Perforce super-user.
| Viewing Jobs by Content with Jobviews
Jobs can be reported with p4 jobs. In its simplest form, with no arguments, p4 jobs will list every job stored in your Perforce server. However, p4 job -e jobview will list all jobs that match the criteria contained in jobview.
| Throughout the following discussion, the following rules apply:
Finding Jobs Containing Particular WordsThe jobview `word1 word2 ... wordN'' can be used to find jobs that contain all of word1 through wordN in any field (excluding date fields).
Ed wants to find all jobs that contain the words filter, file, and mailbox. He types
| p4 jobs -e `filter file mailbox' Spaces between search terms in jobviews act as boolean and's. To find jobs that contain any of the terms, separate the terms with the `|` character.
Ed wants to find jobs that contains any of the words filter, file or mailbox. He types
| p4 jobs -e `filter|file|mailbox' Finding Jobs by Field ValuesSearch results can be narrowed by matching values within specific fields with the jobview syntax `fieldname=value'. Value must be a single alphanumeric word.Ed wants to find all open jobs related to filtering of which he is the owner. He types p4 jobs -e `status=open owner=edk filter' This will find all jobs with a status: of open, an owner: of edk, and the word filter in any non-date field. Using Dates in JobviewsJobs can be matched by date by expressing the date as yyyy/mm/dd or yyyy/mm/dd:hh:mm:ss. If a specific time is not provided, the equality operator = matches the entire day.
Ed wants to view all jobs modified on July 13, 1998. He enters
| p4 jobs -e `mod_date=1998/07/13' Comparison Operators and Field TypesThe usual comparison operators are available. They are:
The behavior of these operators depends upon the type of the field in the jobview. The field types are |
The jobview comparison operators behave differently depending upon the type of field they're used with. The comparison operators match the different field types as follows:
| Linking Jobs to Changelists
Perforce will automatically change the value of a job's status field to closed when the job is linked to a particular changelist, and the changelist is submitted. Jobs can be linked to changelists in one of two ways:
|
Automatically Linking Jobs to Changelists with the p4 user FormThe p4 user form can be used to automatically include particular jobs on any new changelists created by that user. To do this, call p4 user and change the JobView: field value to any valid jobview.
Ed wants to see all open jobs that he owns in all changelists he creates. He types p4 user
and adds a JobView: field: |
All of Ed's jobs that meet this JobView: criteria will automatically appear on all changelists he creates. He can, and should, delete jobs that aren't fixed by the changelist from the changelist form before submission. When a changelist is submitted, the jobs linked to it will have their status: field's value changed to closed. Automatically Performed FunctionsThe value of a job's status field is automatically changed to closed when one of its associated changelists is successfully submitted. Jobs can be disassociated from changelists by deleting the job from the changelist's change form, and any job can be added to a changelist.
Ed has set his p4 user's JobView: field as in the example above. He is unaware of a job
that Sarah has made Ed the owner of (when she entered the job, she set the owner: field
to edk). He is currently working on an unrelated problem; he types p4 submit and sees
the following: |
Since this job is unrelated to the work he's been doing, and since it hasn't been fixed, he deletes it from the form and then quits from the editor. The changelist is submitted; the job is not associated with it. Ed uses the reporting commands to read the details about the job. He fixes this problem, and a number of other filtering bugs; when he next types p4 submit, he sees
Since the job is fixed in this changelist, Ed leaves the job on the form. When he quits from the editor, the job's status is changed to closed. Manually Associating Jobs with Changelists
p4 fix -c changenum jobname can be used to link any job to any changelist. If the changelist has already been submitted, the value of the job's status field is changed to closed. Otherwise, the job keeps its current status.
|
Sarah has submitted a job called options-bug to Ed. Unbeknownst to Sarah, the bug
reported by the job was fixed in Ed's previously submitted changelist 18. Ed links the job
to the previously submitted changelist with p4 fix -c 18 options-bug. Since the
changelist has already been submitted, the job's status is changed to closed.
| It is never necessary to use p4 fix to link an open job to a changelist newly created by the owner of the job, since this is done automatically. However, p4 fix can be used to link a changelist to a job owned by another user. What if There's No Status Field?The discussion in this section has assumed that the server's job specification still contains the default status: field. If the job specification has been altered so that this is no longer true, jobs can still be linked to changelists, but nothing in the job will change when the changelist is submitted. Please see the chapter Editing Job Specifications for more details.
| Deleting Jobs
A job that has been linked to a changelist can be unlinked from that changelist with p4 fix -d -c changenum jobname. Jobs can be deleted entirely with p4 job -d jobname.
|
| Integrating to External Defect Tracking Systems
The Perforce job reporting functionality can be used to integrate jobs into external programs, such as defect tracking systems, via daemons. Please see the next chapter for more information on daemons.
|
| Job Reporting
The job reporting commands can be used to show the correspondence between files and the jobs they fix. |
Other job reporting variations are available. For more examples, please see the Reporting and Data Mining chapter, or consult the Command Reference.
|
Please send comments and questions about this manual to
[email protected]. |
Copyright 1997, 1998 Perforce Software. All rights reserved. Last updated: 08/12/98 |