Perforce Defect Tracking Integration Project


Perforce Defect Tracking Integration Administrator's Guide

Richard Brooksby, Ravenbrook Limited, 2000-08-10

Contents

1. Introduction

This manual is the Perforce Defect Tracking Integration 1.0 Administrator's Guide. It explains how to install, configure, maintain, and administer the Perforce Defect Tracking Integration (P4DTI).

This document is intended for P4DTI administrators. Ordinary users of the defect tracker or Perforce should read the Perforce Defect Tracking Integration User's Guide. (For ideas on how to train your users on the P4DTI, see Section 8, "Training and documentation".)

This guide does not describe the basics of using the P4DTI, Perforce, or the defect tracker. Read the Perforce Defect Tracking Integration User's Guide to understand the P4DTI from a user's perspective.

2. Overview of the P4DTI

2.1. Installation, configuration, and maintenance

To install and run the P4DTI, you must:

  1. Get and install the required software (Section 3).
  2. Ensure you have met the procedural prerequisites for Perforce and your defect tracker (Section 3).
  3. Download and install the P4DTI software (Section 4).
  4. Configure the P4DTI software (Section 5).
  5. Migrate defect tracking data from your defect tracker to the integrated system (Section 6).
  6. Test the installation (Section 7).
  7. Train the users (Section 8).
  8. Go live (Section 9).
  9. Maintain the installation (Section 9).

2.2. How the P4DTI works

The P4DTI works by taking over the job tracking system of Perforce and making the defect tracker's records appear as Perforce jobs. Perforce users can work with jobs more or less as described in the Perforce manuals, and their changes are reflected in the defect tracker. For more information on how Perforce handles jobs, see the Perforce Command Line User's Guide.

Perforce has a mechanism for linking jobs to changelists, to enable you to record the work done for a particular reason. The P4DTI makes these links appear in the defect tracker, making it easy to see what was done or is currently being done to resolve a defect.

The P4DTI replicator is a process that copies data between a defect tracker and a Perforce server to keep each one up to date with changes made in the other. This approach allows developers to do their routine defect resolution work entirely from their Perforce client, without using the defect tracker's interface. It also allows developers to relate their changes to defect tracking issues.

Figure 1 shows how the replicator communicates with the defect tracking server and the Perforce server.

The replicator maintains a one-to-one relationship between issues in the defect tracker's database and jobs in the Perforce repository. (An issue is a unit of work that the defect tracker tracks; some examples are bugs, change requests, and enhancement requests.) In other words, each issue has a corresponding job, and vice versa. The replicator keeps the contents of a configurable set of fields in the defect tracker's issues the same as the contents of the corresponding Perforce job, so that editing one edits the other.

The replicator also copies Perforce's links between jobs and changelists (called "fixes") to the defect tracker's database, and makes them visible in the defect tracker's user interface. Replication of links from Perforce to the defect tracker makes it possible to track, record, and check a number of things; in particular, it makes it possible to track and record the changes made for each issue, and find out why a change was made in terms of issues.

The replicator polls the defect tracking server and the Perforce server at regular intervals to get a list of recent changes, and attempts to propagate these changes to the other system. If a defect tracker issue is changed at the same time as the corresponding Perforce job, the replicator sends an email with the overwritten Perforce job data to the following people:

Most defect trackers have an idea of workflow--a set of rules that control who can do what to which issues. The replicator enforces the defect tracker's workflow by rejecting changes to jobs in Perforce that are illegal in the defect tracker. When it comes across such a change, it undoes the change and sends an e-mail message to the user.

The defect tracker manages the defect tracker records (and therefore the job contents), while Perforce manages the changelists. Neither side controls the "fixes" relationship--the links between jobs and changelists.

Figure 1 shows how the replicator connects to the Perforce and defect tracker servers.

Figure 1. The replication architecture

Diagram of the replication architecture

3. Prerequisites for installing the P4DTI

3.1. Required experience

To administer the P4DTI, you must have the following experience:

3.2. Perforce prerequisites

3.2.1. Software prerequisites

Before installing the P4DTI, you must obtain and install the following software:

3.2.2. Procedural prerequisites

Before installing the P4DTI, you must do the following:

  1. Back up your Perforce repository. For instructions, see the Perforce System Administrator's Guide.
  2. Copy out of Perforce any jobs that you want to keep. The P4DTI takes over the jobs subsystem of Perforce and rewrites the Perforce jobspec, and you must delete all jobs from your Perforce repository as part of configuring the P4DTI. For more information, see Section 5.2.3, "Deleting Perforce jobs". You might want to enter any active jobs into the defect tracking system.
  3. Determine the address and port number of your Perforce server. You will need this information when you configure the P4DTI in Section 5.

3.3. TeamTrack prerequisites

3.3.1. Software prerequisites

Before installing the P4DTI, you must obtain and install the following software:

3.3.2. Procedural prerequisites

Before installing the P4DTI, you must do the following:

  1. Back up your TeamTrack database. For instructions, see the tTrack 4.0 Administrator Manual.
  2. Obtain Administrator-level access to the TeamTrack server machine.
  3. Ensure you have at least 5MB of free disk space for the P4DTI, plus space for logs.
  4. Ensure that your TeamTrack users do not have TeamShare's SourceBridge plug-in installed. SourceBridge prevents the P4DTI from working properly.
  5. Ensure that the workflows defined in your TeamTrack database do not have the following properties:
    • More than one state with the same name in the same project.
    • More than one transition between any pair of states.
    • Transitions from a state to itself.
    • Issue types in one project that have different sets of transitions.
    • Different transitions between the same state names in projects that share state names. The transitions aren't visible from Perforce, only the states, so users might get confused if the transitions are different.
  6. Ensure that the workflows defined in your TeamTrack database do not require more than one transition in quick succession from Perforce. The P4DTI can't infer more than one transition at once. To avoid this problem, design your workflow only with only single steps in Perforce. This is usually straightforward: developers using the Perforce interface will usually only need to transition issues from, for example, "assigned" to "closed", and not through a series of states.
  7. Ensure that your users have the same e-mail address or the same userid in TeamTrack and in Perforce. The replicator uses e-mail addresses to work out which Perforce user corresponds to which TeamTrack user. If it can't find a matching e-mail address, it will try to use the same userid.

3.4. Bugzilla prerequisites

3.4.1. Software prerequisites

Before installing the P4DTI, you must obtain and install the following software:

3.4.2. Procedural prerequisites

Before installing the P4DTI, you must do the following:

  1. Back up your Bugzilla database. For instructions, see the MySQL Reference Manual for version 3.23.20-beta.
  2. Back up your Bugzilla code. As part of P4DTI installation, you must apply a patch to Bugzilla (for details, see Section 5.4.1). A backup of your Bugzilla code is useful if you need to uninstall the P4DTI.
  3. Ensure that you have at least 2MB of free disk space on the Bugzilla server machine for the P4DTI, plus space for logs.
  4. Ensure that your users have the same e-mail address in Bugzilla and in Perforce. The replicator uses e-mail addresses to determine which Perforce user corresponds to which Bugzilla user.

4. Installing the P4DTI

Note: You might want to practice installing and configuring the P4DTI using a test Perforce repository and a test defect tracking database before you try it with your real data. A copy of your real Perforce repository would be ideal; for instructions on how to make a copy of your repository, see the Perforce System Administrator's Guide.

The P4DTI can be installed on any machine that can communicate with the defect tracker's server and the Perforce server. To keep administration simple and reduce network traffic, install and run the P4DTI on the same machine as the defect tracker's server. The rest of this manual assumes that you do this.

4.1. Upgrading from an earlier version

For instructions on how to upgrade from an earlier version of the P4DTI, see the release notes.

4.2. Windows installation

The P4DTI is distributed as a self-extracting executable called p4dti-DT-RELEASE.exe (where DT is the defect tracker, such as "teamtrack", and RELEASE is the release number, such as "1.0.2").

To install the P4DTI, run this executable on the machine where the defect tracker server is installed. The installer unpacks the P4DTI into C:\Program Files\P4DTI\ by default.

4.3. Linux installation

The P4DTI is distributed as a gzipped tar file called p4dti-DT-RELEASE.tar.gz (where DT is the defect tracker, such as "bugzilla", and RELEASE is the release number, such as "1.0.2").

To install the P4DTI, unpack this tar file on the defect tracker server machine, using the following command:

zcat p4dti-DT-RELEASE.tar.gz | tar xvf -

A Linux RPM is not available for this release, so you must determine where to put the files. You can put the files wherever you want.

4.4. Solaris installation

[Section not written yet.]

5. Configuring the P4DTI, Perforce, and the defect tracker

Work through the subsections in the order in which they appear. Do not attempt to run the P4DTI until you have reached the end of this section, or you might end up with a non-working installation.

To configure the P4DTI with Perforce and your defect tracker, you must:

  1. Specify the location of servers and the data you want to appear in Perforce (Section 5.1).
  2. Configure Perforce to accept information from the replicator and, optionally, install triggers to implement access controls (Section 5.2).
  3. Enable P4DTI features, such as the ability to view or edit fixes and changelists from the defect tracker user interface (Section 5.3 for TeamTrack or Section 5.4 for Bugzilla).
  4. Start the replicator (Section 5.5).
  5. Set up the replicator to start automatically when the server machine is rebooted (Section 5.6).
  6. Optionally, create jobs in Perforce (Section 5.7).

5.1. P4DTI configuration

To configure the P4DTI, you edit definitions of Python variables in the file config.py in the installation directory. Edit these definitions according to the notes in the following table. All variables in the file must have a value.

Table 1. Configuration variables in the config.py file

Name Description Example Notes
rid The replicator identifier. "replicator0"

Must be 32 characters or less, start with a letter or underscore, and consist only of letters, numbers, and underscores.

The replicator identifier is used to distinguish between replicators when multiple replicators are being used to replicate issues from a defect tracker to different Perforce servers. If you have only one replicator, it doesn't matter what you use for the replicator identifier; "replicator0" is a good choice since it allows you to add more replicators later.

If you change the replicator identifier then your currently replicated defect tracker issues will stop being replicated. The replicator will believe they are being handled by another replicator.

sid The Perforce server identifier. "perforce0" Must be 32 characters or less, start with a letter or underscore, and consist only of letters, numbers and underscores. You might want to use the hostname of your Perforce server, if it is stable.
administrator_address The e-mail address of the P4DTI administrator. "p4dti-admin@company.domain" The replicator sends error reports to this address.
changelist_url A format string used to build a URL for change descriptions. Specify None if there is no URL for change descriptions. "http://info.company.domain:8080/%d?ac=10" The string is a format string valid for passing to sprintf(); it must have one %d format specifier, for which the change number is substituted. (Note that because it gets passed to sprintf(), you must specify other percent signs twice.) Defect trackers that support this feature list the changelists that fix each issue, and make a link from each changelist to this URL, with the change number substituted. If you are using perfbrowse, then a valid format string looks like "http://info.company.domain/cgi/perfbrowse.cgi?@describe+%d". If you are using P4Web, then a valid format string looks like "http://info.company.domain:8080/%d?ac=10"
closed_state The defect tracker state that maps to the "closed" state in Perforce. Specify None if you want the ordinary state mapping rules to apply. "Resolved" in TeamTrack; "RESOLVED" in Bugzilla. Mapping the defect tracker state that developers use most often to the "closed" state in Perforce makes using the P4DTI easier for the developers, because the Perforce user interfaces make it easier to fix a job to "closed" than any other state. If you are using TeamTrack and your workflow already has a state called "Closed", then that state must map to "closed" in Perforce; set this variable to None. The "CLOSED" state in Bugzilla maps to "bugzilla_closed" in Perforce.
dbms_host Bugzilla only. The host on which the Bugzilla MySQL server is running. "localhost" Set this value to "localhost" if the P4DTI and the Bugzilla MySQL server run on the same machine.
dbms_database Bugzilla only. The name of the MySQL database in which Bugzilla stores its data. "bugs" Normally set to "bugs" during Bugzilla installation (see the Bugzilla README file). Change this setting only if you have set up Bugzilla differently.
dbms_port Bugzilla only. The port number on which the Bugzilla MySQL server listens on the database host (dbms_host). 3306 MySQL normally listens on port 3306. Change this setting only if you have set up MySQL differently. Note that this parameter is expressed as a number, not as a string.
dbms_user Bugzilla only. The user name that the replicator uses to log in to MySQL to use the Bugzilla database. "bugs" Bugzilla normally logs in to MySQL as user "bugs" (see the Bugzilla README file). Change this setting only if you have configured Bugzilla differently, or if you want to set up the replicator to log in as a different user.
dbms_password Bugzilla only. The password that the replicator uses to log in to MySQL to use the Bugzilla database. "" Bugzilla normally logs in with no password (see the Bugzilla README file). Change this setting if you have configured Bugzilla differently, or you want to set up the replicator to log in as a different user and use a password.
bugzilla_directory Bugzilla only. The directory in which Bugzilla is installed, or None if you don't want e-mail processed. "/home/httpd/html/bugzilla" Bugzilla sends e-mail to its users when it notices that a bug has been changed. If the P4DTI is running on the Bugzilla server, it is able to use Bugzilla's processmail script to promptly send e-mail in the same way. This configuration parameter allows the P4DTI to locate processmail. Set it to None if the P4DTI is not running on the Bugzilla server or if you don't want the P4DTI to send these e-mail messages.
dt_name The name of the defect tracking system you're integrating with. Either "TeamTrack" or "Bugzilla". "TeamTrack" Make sure that this variable is set to the appropriate value for your defect tracker.
verbose Specifies whether verbose logging is enabled. 0 If verbose logging is required, set this parameter to 1; to enable normal logging, set it to 0.
log_file The name of the replicator's log file. If log messages should not be sent to a file, specify None. "C:\\Program Files\\P4DTI\\p4dti.log"

The replicator generates log messages to record its actions. These log messages are sent to all of the following locations:

  • The standard output of the replicator.
  • The system log (under UNIX and Linux).
  • The file that this variable is set to, unless the setting is None.
p4_client_executable The location of the Perforce client executable. "C:\\Program Files\\Perforce\\p4.exe" This setting doesn't need to be an absolute path name if the directory is on the replicator user's path. On Windows this setting might be "C:\\Program Files\\Perforce\\p4.exe". On UNIX it might be just "p4".
p4_password The password the replicator uses to log in to the Perforce server. If there is no password, specify "" (empty quotes). "" For information about how the replicator logs in to Perforce, see Section 5.2.
p4_port The address and port of the Perforce server with which the replicator communicates. "perforce.company.domain:1666"
p4_server_description A description of the Perforce server. This might be used by the defect tracker to show which Perforce server an issue is replicated to. "Hardware development group Perforce server"
p4_user The userid that the replicator uses to log in to the Perforce server. "p4dti-replicator0" For information about how the replicator logs in to Perforce, see Section 5.2. If you want to add more replicators later, incorporate the replicator identifier (rid) into this userid.
replicated_fields (for TeamTrack) A list of the database names of TeamTrack fields that are replicated in Perforce. The fields STATE, OWNER, and TITLE are always replicated, so omit those fields when setting this variable. ["DESCRIPTION", "PRIORITY", "SEVERITY"] For advice on which fields to replicate, and how to find out their database names, see Section 5.1.1.
replicated_fields (for Bugzilla) A list of the names of Bugzilla fields that are replicated in Perforce. The fields "bug_status", "short_desc", "assigned_to" and "resolution" are always replicated, so omit those fields when setting this variable. ["longdesc", "priority", "bug_severity", "product"] For advice on which fields to replicate, see Section 5.1.1.
replicator_address The e-mail address from which the replicator sends e-mail. This address is used in the "From" field of e-mail that the replicator sends. "p4dti-replicator0@company.domain" To make it easier for users to get assistance, make this address an alias for the administrator e-mail address (administrator_address). If you are using Bugzilla, this e-mail address is also used for the replicator's Bugzilla account; see Section 5.4.2.
smtp_server The address of the SMTP server that the replicator uses to send e-mail. "smtp.company.domain"
start_date The starting point in time for replication. "2001-02-10 00:00:00" Issues modified after this date will be replicated; issues unchanged after this date will be ignored. Must be a string in the form "YYYY-MM-DD HH:MM:SS".
teamtrack_password TeamTrack only. The password that the replicator uses to log into TeamTrack. If there is no password, specify "" (empty quotes). "" See Section 5.3.2.
teamtrack_server TeamTrack only. The TeamTrack server hostname and (optionally) port with which the replicator communicates. "teamtrack.company.domain:80"
teamtrack_user TeamTrack only. The user name that the replicator uses to log into TeamTrack. "P4DTI-replicator0" See Section 5.3.2.

5.1.1. Choosing which fields to replicate

Here's some advice on which fields to replicate:

If you're using TeamTrack's sample database, you might want to replicate the following fields:

To find out the database name of a TeamTrack field, follow these steps:

  1. Run the TeamTrack administrator. (Under Windows, choose Start > Programs > TeamShare > TeamTrack Administrator.)
  2. Select the Projects tab.
  3. Select a project from the list (but not the base project).
  4. Click the Edit button.
  5. Select the Default Fields tab.
  6. Select the desired field from the list.
  7. Click the Edit button.
  8. Look in the Database Field Name field in the dialog.

If you're using Bugzilla, you might want to replicate the following fields:

If you're using Bugzilla, the replicator rejects the following types of changes from within Perforce:

The following table lists the field names for Bugzilla 2.10. If you have modified Bugzilla, your field names may differ. To display the set of Bugzilla field names, type mysqlshow bugs bugs at a shell prompt.

Table 2. Bugzilla field names

Field name Name on Bugzilla form Replication policy
bug_id Bug # always, read only
bug_status Status always, read/write
assigned_to Assigned To always, read/write, user
short_desc Summary always, read/write
resolution Resolution always, read/write
bug_file_loc URL read/write
bug_severity Severity read/write
op_sys OS read/write
priority Priority read/write
rep_platform Platform read/write
reporter Reporter read/write, user
qa_contact - read/write, user
status_whiteboard Status Whiteboard read/write
longdesc Description append only
groupset - read only
creation_ts Opened read only
delta_ts - read only
product Product read only
version Version read only
component Component read only
target_milestone Target Milestone read only
votes Votes read only
keywords Keywords read only
lastdiffed - read only
everconfirmed - read only

The following fields are displayed on the Bugzilla bug form but are kept in separate database tables and cannot be replicated:

If you need to change the list of replicated fields after you've started using the P4DTI, see Section 9, "Maintaining the P4DTI".

5.2. Perforce configuration

To configure Perforce, you must:

5.2.1. Creating a Perforce user for the replicator

Create a user in Perforce for the replicator; for instructions, see the Perforce System Administrator's Guide. The replicator user must have the following properties:

For information on getting a license from Perforce Software for this extra user, see Section 3.2, "Perforce prerequisites".

5.2.2. Installing Perforce triggers to enforce workflow

You can use the P4DTI in combination with a Perforce trigger to enforce extra workflow restrictions. For example, if your organization assigns priorities to issues, you can prevent changes being made to areas of the repository unless they resolve at least one defect of priority 3 or higher.

The P4DTI comes with an example trigger script that you can adapt for your needs, installed as example_trigger.py in the default installation directory.

To enforce workflow restrictions, follow these steps:

  1. Configure the P4DTI to replicate the defect tracker fields that you want to check. For example, you can check that, say, the "priority" or "severity" is above a certain level, or that a manager has set the "approval" field. See the list of replicated fields (replicated_fields) configuration parameter.
  2. Adapt the trigger script for your needs. You must be able to do a small amount of Python programming to adapt the trigger script. The example script contains comments to help you.
  3. Install the trigger script. For instructions on installing and managing trigger scripts, see the Perforce System Administrator's Guide.

5.2.3. Deleting Perforce jobs

You must delete all jobs from your Perforce installation. The P4DTI takes over the jobs subsystem of Perforce and rewrites the Perforce jobspec.

For instructions, see the Perforce Command Line User's Guide.

If you already use Perforce jobs and have significant tools that depend on your jobspec, the configuration options described in Section 5.1, "P4DTI configuration", might not be flexible enough to support your requirements. However, you might be able to write your own configuration and use your own jobspec. To write your own configuration, you must understand the P4DTI configuration architecture and be fluent in the Python programming language. See the Perforce Defect Tracking Integration Integrator's Guide for details of how to configure the P4DTI and guidance on developing your own configuration. Note that neither Perforce nor the manufacturer of your defect tracker can support a configuration that you write yourself.

5.3. TeamTrack configuration

To configure TeamTrack, you must:

5.3.1. Updating the Windows Registry

You need to add a TeamTrack value to the Windows Registry to tell TeamTrack that the P4DTI is present. To edit your Registry, follow these steps:

  1. Run the Registry editor, regedit.
  2. Select the key HKEY_LOCAL_MACHINE\Software\TeamShare\TeamTrack.
  3. Choose Edit > New > String Value and create a value with the name VC Integration.
  4. Choose Edit > Modify and enter "perforce".

Figure 2 shows the correct entry.

Figure 2. Registry keys for TeamTrack with the P4DTI

Screen shot of TeamTrack registry keys in the Windows Registry Editor

5.3.2. Creating a TeamTrack user for the replicator

You need to create a TeamTrack user for the replicator. This user corresponds to the replicator TeamTrack userid (teamtrack_user) parameter you set in Section 5.1, "P4DTI configuration".

To create a TeamTrack user for the replicator, follow these steps:

  1. Run the TeamTrack Administrator. (Under Windows, choose Start > Programs > TeamShare > TeamTrack Administrator.)
  2. Select the Users tab.
  3. Click the Add button.
  4. On the General tab, in the Login ID field, enter the replicator user name (see the replicator Teamtrack userid (teamtrack_user) parameter).
  5. Click the Standard radio button (see Figure 3).
  6. On the the Privileges tab, select the System tab and then select the "Connect using the API" check box (see Figure 4).
  7. Click OK to add the user.

For information on getting a license from TeamShare for this extra user, see Section 3.3, "TeamTrack prerequisites".

Figure 3. New user: General tab

Screen shot showing the general tab for creating a new user in TeamTrack Administrator

Figure 4. New user: Privileges tab

Screen shot showing the Privileges tab for creating a new user in TeamTrack Administrator

5.3.3. Providing field descriptions

The replicator uses TeamTrack issue field descriptions as the source for the Perforce job field descriptions. These job field descriptions appear in comments in every job form (if you're using the Perforce command line) and as tooltips for the fields in the job editing dialog (if you're using P4Win, the Perforce Windows GUI).

TeamTrack leaves field descriptions blank when you create a database, so you must provide descriptions of fields that your developers edit. For example, you might describe the TITLE field as "A one-sentence statement of the problem from the user's perspective", and the DESCRIPTION field as "A detailed description of the problem from the user's perspective, including how to reproduce it."

To enter field descriptions, follow these steps:

  1. Run the TeamTrack Administrator. (Under Windows, choose Start > Programs > TeamShare > TeamTrack Administrator.)
  2. Select the Workflows tab.
  3. Select the Issue Workflow.
  4. Click the Edit button.
  5. Select the Default Fields tab.
  6. Select the field you want to describe.
  7. Click the Edit button.
  8. Enter the description in the Description field.
  9. Click OK to save your entries.
  10. Repeat steps 6 to 9 until you're done.
  11. Click the OK button.

5.4. Bugzilla configuration

To configure Bugzilla, you must:

5.4.1. Patching Bugzilla

You need to make some minor modifications to the Bugzilla code so that users can see Perforce information on Bugzilla bug forms. These modifications are distributed as a patchfile for version 2.10 of Bugzilla.

If you have modified Bugzilla at your site, you might still be able to apply the patch successfully. Changes to the database schema, the permissions rules, or the workflow rules are likely to cause the P4DTI to malfunction. You might need to modify the P4DTI if you have changed these parts of Bugzilla.

The patch changes the following Bugzilla files:

These changes are small and self-contained. If your changes do not affect these two files or only affect them in minor ways, the patch should operate correctly. If the patch program fails because of your Bugzilla modifications, it might still be possible to introduce the changes by hand. If you cannot apply the patch, the replicator might still work, but the Bugzilla bug form will not show Perforce-specific information (for example, changelists that are linked to the bug by a "fix"). The operation of the replicator itself is affected only if you have made drastic changes to Bugzilla (for example, if you have completely removed the "bug_status" column from the "bugs" table).

To apply the patch, follow these steps:

  1. Make a copy of your Bugzilla code so that you can uninstall the P4DTI if necessary.
  2. Go to your Bugzilla installation directory.
  3. Enter the following command:
    patch < p4dti-install-dir/bugzilla-2.10-patch
    (where p4dti-install-dir is your P4DTI installation directory).
  4. Check the output of the patch program carefully to ensure it succeeded.

5.4.2. Creating a Bugzilla user for the replicator

You need to create a Bugzilla user for the replicator. The replicator uses e-mail addresses to work out which Perforce user corresponds to which Bugzilla user. A Perforce user that does not correspond to a Bugzilla user is translated to the replicator's Bugzilla user, except for user fields (for example, "AssignedTo") in jobs. The replicator rejects a change when there is no Bugzilla user corresponding to a changed user field.

To create a Bugzilla user for the replicator, follow these steps:

  1. In a Web browser, go to <http://your-bugzilla-path/editusers.cgi>.
  2. Log in if prompted.
  3. Click Submit to display the user list.
  4. At the bottom of the user list, click "Add a new user".
  5. In the "Login name" field, enter the replicator e-mail address (replicator_address).
  6. In the "Real name" field, enter a name like "Perforce defect tracking integration".
  7. Enter a password.
  8. In the "Disable text" field, enter something like "This user can access Bugzilla only as the P4DTI replicator process" to prevent access through the Bugzilla user interface.
  9. Click Add to create the user.

5.4.3. Enabling the Bugzilla extensions

After patching the Bugzilla code, you need to enable the P4DTI extensions. To enable the extensions, follow these steps:

  1. In a Web browser, go to <http://your-bugzilla-path/editparams.cgi>.
  2. Log in if prompted.
  3. Set the "p4dti" parameter to "on".
  4. Click "Submit changes" to enable the extensions.

To disable use of the P4DTI from the Bugzilla user interface, switch the extensions off.

5.5. Starting and stopping the replicator manually

To start the replicator, follow these steps from the operating system command line:

  1. Go to the P4DTI installation directory.
  2. Run the command python run.py.

The first time you start the replicator, it displays log output explaining how the replicator is setting up the defect tracker schema extensions, as shown in the following figure:

Figure 5. Example replicator log output on startup (TeamTrack integration)

2000-12-08 15:27:25 UTC	P4DTI-00	replicator0	Reading SELECTIONS table to find type prefixes.
2000-12-08 15:27:25 UTC	P4DTI-00	replicator0	Reading USERS table.
2000-12-08 15:27:27 UTC	P4DTI-00	replicator0	Installing field 'P4DTI_RID' in the TS_CASES table.
2000-12-08 15:27:27 UTC	P4DTI-00	replicator0	Installing field 'P4DTI_SID' in the TS_CASES table.
2000-12-08 15:27:27 UTC	P4DTI-00	replicator0	Installing field 'P4DTI_JOBNAME' in the TS_CASES table.
2000-12-08 15:27:28 UTC	P4DTI-00	replicator0	Installing field 'P4DTI_ACTION' in the TS_CASES table.
2000-12-08 15:27:30 UTC	P4DTI-00	replicator0	Installed all new fields in the TS_CASES table.
2000-12-08 15:27:30 UTC	P4DTI-00	replicator0	Put 'LAST_CHANGE' parameter in replicator configuration with value '23'
2000-12-08 15:27:30 UTC	P4DTI-00	replicator0	Put 'SERVER' parameter in replicator configuration with value '"{'sid': 'perforce0', 'description': 'Perforce server 0'}"'
2000-12-08 15:27:31 UTC	P4DTI-00	replicator0	Put 'STATUS_VALUES' parameter in replicator configuration with value '"{'sid': 'perforce0', 'description': '_new/assigned/closed/verified/deferred/cleared/clogged/pumped'}"'
2000-12-08 15:27:31 UTC	P4DTI-00	replicator0	Put 'CHANGELIST_URL' parameter in replicator configuration with value '"{'sid': 'perforce0', 'description': None}"'
2000-12-08 15:27:45 UTC	P4DTI-00	replicator0	Reading USERS table.
2000-12-08 15:27:45 UTC	P4DTI-00	replicator0	Matched TeamTrack user 'pam' with Perforce user 'spam' by e-mail address 'gdr+pam@ravenbrook.com'.
2000-12-08 15:27:45 UTC	P4DTI-00	replicator0	Matched TeamTrack user 'john' with Perforce user 'scone' by e-mail address 'gdr+john@ravenbrook.com'.
2000-12-08 15:27:45 UTC	P4DTI-00	replicator0	Matched TeamTrack user 'fred' with Perforce user 'bedhead' by e-mail address 'gdr+fred@ravenbrook.com'.

After its startup sequence, the replicator polls for changes every 10 seconds and replicates those changes. After you start it for the first time, nothing happens until you make changes in the defect tracker or in Perforce. (To replicate all issues from the defect tracker to Perforce, follow the procedure in Section 5.7, "Refreshing jobs in Perforce".) Figure 6 shows typical replicator log output when it is replicating a change.

Figure 6. Example replicator log output on replication (TeamTrack integration)

2000-12-08 15:59:12 UTC	P4DTI-00	replicator0	1 issue has changed
2000-12-08 15:59:12 UTC	P4DTI-00	replicator0	Set up issue '1' to replicate to job 'PRB00001'
2000-12-08 15:59:13 UTC	P4DTI-00	replicator0	Replicating issue 'PRB00001' to job 'PRB00001'
2000-12-08 15:59:15 UTC	P4DTI-00	replicator0	-- Changed fields: {'Engineer': 'fred', 'Resolution': '(None)', 'P4DTI-issue-id': '1', 'Owner': 'spam', 'Project': 'Pump', 'Description': 'I was just polishing the dome when my hand slipped.\012', 'Manager': 'spam', 'Priority': 'Urgent', 'How_Found': 'Normal_Use', 'Last_Modified_Date': '2000/12/08 15:59:05', 'P4DTI-rid': 'replicator0', 'Title': 'My oily rag fell into the chocolate pump', 'Workaround': '', 'Severity': 'High'}

To stop the replicator, follow these steps:

  1. If the replicator is running in the background on UNIX or Linux, bring it to the foreground.
  2. Press Control-C and wait for the replicator to next poll.

5.6. Setting up the replicator to start automatically

To set up the replicator to start automatically when the system boots, follow these steps:

[This section not written yet.]

5.7. Refreshing jobs in Perforce

The replicator only replicates issues that are created or modified after the replicator is first started. [This isn't true since the start_date parameter was introduced. RB 2001-02-13] Refreshing jobs replicates all issues from the defect tracker to Perforce and so can be used to initiate the replication of existing issues from the defect tracker to Perforce. You might want to create jobs in Perforce if:

To create Perforce jobs that correspond to all the issues in your defect tracker, follow these steps from the operating system command line:

  1. Stop the replicator.
  2. Go to the P4DTI installation directory.
  3. Run the command python refresh.py.
  4. Start the replicator again by running the command python run.py.

Refreshing jobs deletes all the existing jobs in Perforce and replicates them from the defect tracker's database. This procedure is also useful if:

6. Migrating your defect tracking data to the integrated system

You do not need to take any special action to migrate defect tracking data from your defect tracker to the integrated system. The replicator starts replicating defect tracker issues as soon as it starts up. Only issues that are created or modified after the replicator is first started are replicated to Perforce.

7. Testing the P4DTI

7.1. Testing your configuration

Test the P4DTI configuration by creating a test issue and taking it through a complete life-cycle (that is, through the workflow) as described in the Perforce Defect Tracking Integration User's Guide. You might need to adapt the use cases described in the user's guide to your organization's workflow.

Test the P4DTI from both Perforce and the defect tracker. In Perforce, test the P4DTI using the interface that your developers are most likely to use. The main Perforce interfaces are:

7.2. Checking data consistency

To run the consistency checker and manage its output, follow these steps:

  1. Change to the P4DTI installation directory.
  2. Run the command python check.py.

Because the replicator only replicates issues that have changed since the replicator was first started, the consistency checker might report that a number of issues in the defect tracker are not replicated. This does not indicate an inconsistency in the data. To replicate all issues from the defect tracker to Perforce, follow the procedure in Section 5.7, "Refreshing jobs in Perforce".

You can also examine the database using a database application (for example, Microsoft Access or the mysql command) to ensure the Perforce data is in there.

8. Training and documentation

You might want to provide training for Perforce and defect tracker users before they adopt the P4DTI for everyday use. If so, consider preparing training materials that walk them through the workflow for an issue, using the procedures that are documented in the Perforce Defect Tracking Integration User's Guide.

Even if you don't have a formal training session for your users, ensure that they:

9. Maintaining the P4DTI

You must stop and re-start the replicator as described in section 5.5, "Starting the replicator manually" after changing any of the configuration parameters described in section 5.1, "P4DTI configuration".

You must also stop and re-start the replicator after adding new users to your defect tracker or changing a user's userid or e-mail address. You might then need to edit jobs which mention that user in a field. The p4 jobs -e command can be used to search for text in the Perforce jobs.

After changing the list of replicated fields (replicated_fields), you must also refresh Perforce jobs, as described in Section 5.7, "Refreshing jobs in Perforce". Perforce uses the field number in the jobspec to find data, not the field name (for more information, see the Perforce System Administrator's Guide). If you change the list of replicated fields, then the field numbers change, which means that the fields of existing jobs in Perforce will be mixed up. Refreshing the jobs re-creates them from the defect tracker with the correct fields.

The TeamShare API used by the replicator to communicate with the TeamTrack server does not report the reasons for errors. This means that the P4DTI cannot tell why it can't replicate a change to a job from Perforce to TeamTrack. In general, the P4DTI assumes that it's because the user doens't have permission to modify the corresponding case, or because they've made a mistake or omitted information in filling out the job form. But sometimes there's a real error. If a user can't get a change through and you don't know why, check the Windows Application Log on the TeamTrack server machine using the Event Viewer. The Event Log usually contains more information about why things are going wrong. Note that TeamTrack doesn't report violations of privileges or invalid data in the Event Log.

10. Uninstalling the P4DTI

To uninstall the P4DTI, follow these steps:

  1. Tell your staff. Ask them to stop using either Perforce jobs or the defect tracking, whichever you're not planning to use in future.
  2. Remove any hooks that you created in Section 5.5, "Starting the replicator manually", such as Windows services, entries in /etc/rc.d, and so on.
  3. Stop the replicator by pressing Control-C and waiting for the replicator to exit.
  4. If you're using Bugzilla:
    1. Disable the Bugzilla extensions that were enabled in section 5.4.3, "Enabling the Bugzilla extensions".
    2. Delete the replicator's Bugzilla user that was created in section 5.4.2, "Creating a Bugzilla user for the replicator".
    3. optionally, restore the unpatched copy of Bugzilla made in section 5.4.1, "Patching Bugzilla".
  5. If you're using TeamTrack:
    1. Delete the replicator's TeamTrack user that was created in section 5.3.2, "Creating a TeamTrack user for the replicator".
    2. Delete the registry key created in section 5.3.1, "Updating the Windows Registry".
  6. Remove any Perforce triggers that were added in section 5.2.2, "Installing Perforce triggers to enforce workflow".
  7. Delete the replicator's Perforce user created in section 5.2.1, "Creating a Perforce user for the replicator".
  8. Delete the contents of the P4DTI installation directory.

11. Troubleshooting and error messages

11.1. Troubleshooting

To troubleshoot a problem with the P4DTI, follow these steps:

  1. Look in the P4DTI log. If you find an error message, see if it is listed in Section 11.2, "Error messages".
  2. Check your configuration against Section 5.1, "P4DTI configuration". Are the hostnames, userids, and passwords correct? Most problems with the P4DTI are caused by incorrect or inconsistent configuration.
  3. If you can't solve the problem, contact Perforce support (for details, see http://www.perforce.com/perforce/support.html). Provide the following information:

11.2. Error messages

Field '%s' has type %d: this is not supported by P4DTI.

The P4DTI doesn't support all TeamTrack field types. One of the fields in your list of replicated fields (replicated_fields) has an unsupported type.

You can determine the list of supported types from the type_table in configure_teamtrack.py. The most notable unsupported type is "MULTIPLE_SELECTION", because Perforce does not provide any kind of multiple selection interface.

If you really need to have the field replicated, you have the following options:

Field '%s' specified in 'replicated_fields' list is a system field: leave it out!

Some fields are always replicated. For details, see the list of replicated fields (replicated_fields) parameter.

Remove the system fields from your list of replicated fields.

Field '%s' specified in 'replicated_fields' list not in TeamTrack FIELDS table.

You can specify a list of fields for the P4DTI to replicate into jobs; for details, see the list of replicated fields (replicated_fields) parameter. This error means that the P4DTI couldn't find one of the fields in the list. This problem might happen if you change the set of fields in TeamTrack.

Double-check the field names you specified as the replicated_fields. If you're changing fields in TeamTrack, see Section 9, "Maintaining the P4DTI", for important information.

Too many fields to replicate: Perforce jobs can contain only 99 fields.

Reduce the number of fields that you replicate by removing items from the list of replicated fields (replicated_fields).

Two defect tracker states '%s' and '%s' map to the same Perforce state '%s'.

The P4DTI chooses the names of states of Perforce jobs based on the state names in the defect tracker. It uses the following mapping system:

Resolve this problem by making the state names distinct in TeamTrack. Do not use spaces at the beginning of state names.

You can't have a field called 'code' in the Perforce jobspec.

Perforce uses the field "code" to pass internal status information to clients.

In TeamTrack, change the logical name of the field to something other than "code" by following these steps:

  1. Run the TeamTrack Administrator. (Under Windows, choose Start > Programs > TeamShare > TeamTrack Administrator.)
  2. Select the Workflow tab.
  3. Select the workflow containing the field called "code".
  4. Click the Edit button.
  5. Select the Default Fields tab.
  6. Select the "code" field.
  7. Click the Edit button.
  8. Change the Logical Field Name.
  9. Click OK.
  10. Click OK again.

You specified the closed_state '%s', but there's no such TeamTrack state.

You can specify a defect tracker state to map to the Perforce "closed" state, so that you can work around limitations in Perforce; for details, see the state mapping to "closed" (closed_state) parameter. The P4DTI checks that this state exists, so that you can be sure that it knows which one you mean. This error means that the P4DTI couldn't find the state you specified, which might happen if you change the state name in the defect tracker without changing the P4DTI configuration.

Double-check the state name you specified as the closed_state in config.py.

Perforce error: You don't have permission for this operation

You haven't given the replicator permission to edit the Perforce jobspec. The replicator needs to have superuser privileges in Perforce. For instructions, see Section 5.2.1, "Creating a Perforce user for the replicator".

TeamShare API Error: ERROR: (no message from the TeamShare API)

This means that TeamTrack reported an error, but provided no information about the cause of the error.

Usually this is because a user has modified a job but doesn't have permission to modify the corresponding case, or because a user has made a mistake or omitted information in filling out the job form.

Sometimes there's a real error. If the P4DTI cannot replicate a change from Perforce to TeamTrack and you don't know why, check the Windows Application Log on the TeamTrack server machine using the Event Viewer. The Windows Application Log usually contains more information about why problems are occurring. (But note that TeamTrack doesn't report violations of privileges or invalid data in the Windows Application Log.)

TeamShare API error: SERVER_ERROR: Access Denied. You do not have API connect privileges.

The replicator's TeamTrack user lacks the "Connect using the API" privilege. You need to use the TeamTrack Administrator to assign this privilege. See Section 5.3.2, "Creating a TeamTrack user for the replicator".

TeamShare API Error: SERVER_ERROR: Authentication Failed. Invalid user id or password

You haven't created a user in TeamTrack for the replicator (for instructions, see Section 5.3.2, "Creating a TeamTrack user for the replicator"), or else you've given the replicator incorrect values for the replicator Teamtrack userid (teamtrack_user) and replicator Teamtrack password (teamtrack_password) parameters.

TeamShare API error: SOCKET_CONNECT_FAILED: Socket Connect failed.

The P4DTI can't connect to the TeamTrack server. Check that TeamTrack is up and running. Check your setting for the TeamTrack server hostname (teamtrack_server).

A. References

[RB 2000-08-10] "Perforce Defect Tracking Integration User's Guide"; Richard Brooksby; Ravenbrook Limited; 2000-08-10.
[RB 2000-10-16] "Perforce Defect Tracking Integration Integrator's Guide"; Richard Brooksby; Ravenbrook Limited; 2000-10-16.
[Bugzilla 1999-02-25] Bugzilla Installation README file; Ry4an Brase, Bryce Nesbitt, Dan Mosedale, Martin Pool, Terry Weissman; The Mozilla Organization; 1999-02-25
[GDR 2000-09-04] "TeamTrack database schema extensions for integration with Perforce"; Gareth Rees; Ravenbrook Limited; 2000-09-04; <http://www.ravenbrook.com/ project/p4dti/master/ design/teamtrack-p4dti-schema/>.
[TeamShare 2000-05] "tTrack 4.0 Administrator Manual"; TeamShare; 2000-05.
[MySQL 2000-07-02] "MySQL Reference Manual for version 3.23.20-beta"; MySQL; 2000-07-02.
[BeOpen PythonLabs 2000-10-16] "Python Tutorial"; Guido van Rossum (Fred L. Drake, Jr., editor); BeOpen PythonLabs; 2000-10-16; <http://www.python.org/doc/current/tut/tut.html>.
[Perforce 2000-12-22a] "Perforce 2000.2 P4 Command Line User's Guide"; Perforce Software; 2000-12-22; <http://www.perforce.com/ perforce/doc.002/ manuals/p4guide/>, <ftp://ftp.perforce.com/ /pub/perforce/r00.2/doc/ manuals/p4guide/p4guide.pdf>.
[Perforce 2000-12-22b] "Perforce 2000.2 System Administrator's Guide"; Perforce Software; 2000-12-22; <http://www.perforce.com/ perforce/doc.002/ manuals/p4sag/>, <ftp://ftp.perforce.com/ /pub/perforce/ r00.2/doc/ manuals/p4sag/p4sag.pdf>.

B. Document History

2000-08-10 RB Created placeholder.
2000-09-11 GDR Added instructions for demonstrating the integration and notes on version 0.2.
2000-09-20 RB Replaced demo instructions with full documentation outline from documentation plan.
2000-10-15 RB Added installation and uninstallation sections, and other sections discussed in [RB 2000-10-07]. Removed parts specific to Ravenbrook Information System.
2000-10-16 RB Merged with master sources and GDR's demonstration instructions for version 0.2. More edits required to make this consistent with the master sources.
2000-10-19 GDR Updated to fix defects in release 0.3.1 [GDR 2000-10-17a] and release 0.3.2 [RB 2000-10-18b].
2000-11-25 LMB Removed "system" from title. Made lots of minor formatting and transition edits. Moved Glossary to end of document. Reorganized Section 4.
2000-11-26 RB Improved prerequisites section. Added draft Bugzilla prerequisites. Formatted troubleshooting section. Updated version 0.3 references to version 0.4.
2000-11-27 RB Added readership. Removed some false statements.
2000-11-29 GDR Revised section 5 (configuration) to explain how to use the automatic configuration engine for TeamTrack. Moved material from sections 4 and 5 to make an appendix E for advanced configuration. Added section 4.6, a placeholder that will describe how to create a Perforce user for the replicator. The integration with TeamTrack now requires Python 2.0.
2000-11-29 RB Corrected overview and improved replicator diagram. Changed prerequisites to point at Perforce 2000.2 beta release. Added proper text to Bugzilla prerequisites section. Cross-referenced to User's Guide.
2000-11-29 LMB Changed "—" to "--" because the former doesn't display properly in Netscape. Made some minor edits in Sections 1-3.
2000-11-30 LMB Corrected figure numbers in the text that were off by one. Finished editing the AG. Swapped round Sections D and E. Searched the doc for "dfn" tags and incorporated those terms into the glossary. Deleted the list in Section 4.1 and folded its single entry into the preceding sentence. Added a short note to Section 4.4 to the effect that if you're using IIS, you don't need to stop and restart the TeamTrack server. Added a note to Section 4.6 that we need to tell admins to make the P4DTI user a Perforce super user and add it to the "p4 protect" table if they're using it.
2000-11-30 RB Added instructions to upgrade users Perforce clients and to stop using TeamShare SourceBridge. Told the administrator to check the Windows event log when things go wrong, because the TeamShare API doesn't tell the replicator about errors.
2000-11-30 GDR Added comments to the example jobspec in section D.2, and fixed the formatting. Added note saying that you may not have a field called "code". Listed the TeamTrack workflows that won't work well. Wrote advice on how to configure the integration. Added the changelist_url configuration parameter.
2000-12-01 RB Moved TeamTrack and Bugzilla configuration sections into the Configuration chapter, after the P4DTI configuration instructions. Added basic Linux installation instructions. Rewrote sections of the configuration instructions to go with the new flow. Deleted section on switching TeamTrack databases. Updated registry editing and Team Track privilege instructions. Added instructions for creating a Perforce user for the replicator. Explained multiple transition limitation. Updated screenshots.
2000-12-04 GDR Made list of configuration parameters in Section 5.2 consistent with the configuration file (by alphabetizing both lists). Added missing configuration parameter closed_state. Added note in section 5.2 about checking the configuration.
2000-12-05 RB Changed figures to use "div" tags in line with the user manual and to allow more flexible use of material in figures. Added basic notes on Bugzilla configuration (more to come).
2000-12-06 RB Added section 2.3 about supported platform configurations.
2000-12-07 GDR Advised admin to make e-mail addresses or userids the same in TeamTrack and Perforce. Advised admin to restart when users are added or changed.
2000-12-07 RB Removed "TeamTrack only" notice from "replicated_fields" configuration parameter heading.
2000-12-08 GDR Documented translation of "ignore" state. Improved advice about what to do with a field called "code". Fixed table of contents.
2000-12-08 GDR Documented refresh_perforce.py.
2000-12-08 GDR Documented translation of "ignore" state. Improved advice about what to do with a field called "code". Fixed table of contents.
2000-12-08 GDR Documented refresh_perforce.py.
2000-12-08 RB Brought configuration section 5.2 up to date with Bugzilla configurator (see job000115).
2000-12-08 RB Updated to match unified configuration file and related re-organization of sources.
2000-12-11 GDR Noted that the changelist_url configuration parameter must be suitable for passing to sprintf().
2000-12-13 RB Updated for version 0.5 to cover Bugzilla supported platforms, configurations, and known issues. Added changelist_url for use with P4Web.
2000-12-13 RB Moving the Python 1.5.2 sources and Linux RPM to the project imports.
2000-12-15 NB Added verbose configuration item.
2000-12-15 NB Added more chat about bugzilla_user.
2000-12-15 NB More about email addresses, python script names, and deleting jobs.
2000-12-22 LMB Started improving the manual as agreed in email from RB (Documentation preparation meeting with LMB, 2000-12-20).
2001-01-01 LMB Continued improving the manual as agreed in email from RB, modulo deleting things (Documentation preparation meeting with LMB, 2000-12-20). Removed spaces around em-dashes as per "Read Me First!"
2001-01-02 GDR The recommendation for administrator experience (section 3) is more realistic. Moved text from Appendix D to the Integrator's Guide, and replaced with a reference. Replaced "company.com" with "company.domain" since the former exists. Fixed typos and improved wording to fix defects recorded in [GDR 2000-12-08b], [GDR 2000-12-08c], and [GDR 2000-12-09]. Made cross-references consistent. Added two error messages to section 13.2. Added figures 5 and 6 showing example log output. Added section 5.4.3 about providing field descriptions.
2001-01-02 LMB Merged GDR's changes to master manuals with this branch. Got about two-thirds of the way through a heavy copyedit.
2001-01-03 LMB Made some changes suggested by GDR. Finished copyedit; noticed a number of things I didn't catch in the copyedit, so I'm sure there are other problems. Verified links. Indicated which comments I thought had been dealt with, in case GDR has time to work on this document tomorrow. Did a once-over in IE5 to make sure I didn't break anything too badly in the last two days.
2001-01-05 LMB Dealt with about half of the changes that TC@perforce suggested.
2001-01-06 LMB Procedurized and listed everything, as per TC@perforce's suggestions.
2001-01-07 LMB Edited references. Replaced Section 5.3.3.
2001-01-07 LMB Removed extraneous title material and Sections A and B. Removed comments and sent them in an email to p4dti-staff. Did final copyedit and finished prepping manual to send to TC@perforce.
2001-01-20 LMB Incorporated TC's handwritten edits. Cut lots of stuff out of the glossary.
2001-01-21 LMB Re-added author, date, and other title material, and Sections A and B. Added comments on what I'd been doing to the manual in the interim (not much). Edited some new material from GDR. As per GDR's email of 2001-01-18, point 5, deleted Section C and moved the material in Section D to Section 5.3.3. Fixed XREFS to Section 5; checked XREFS to Sections 12, 13, C, and D. Added material on when you might want to refresh jobs. Edited Section 10 slightly. Checked that procedure lead-ins and lists meet TC's specifications. Copied in Nick's changes to the info on patching Bugzilla and to the closed_state and replicated_fields parameters. Deleted mentions of bugzilla_user. Corrected internal XREFS. Copied over information on log files from master sources. Ran the spelling checker.
2001-01-22 LMB As per TC@perforce's request and GDR's instructions, added menu command for how to start the TeamTrack Administrator from Windows. Added upgrade instructions to Section 4.
2001-01-29 NB Added bugzilla_directory configuration parameter.
2001-02-01 RB Updated references to Perforce manuals to version 2000.2. Added steps to section 10, "Uninstalling the P4DTI", to undo all installation steps. Added missing information to section 9, "Maintaining the P4DTI", and clarified some of the existing instructions.
2001-02-02 RB Implemented paper review comments of 2001-01-25 by TC@perforce.
2001-02-12 GDR Added start_date configuration parameter. Renamed refresh_perforce.py to refresh.py.

Glossary

changelist An atomic change transaction in Perforce.
daemon license A license for a process rather than a person.
fix A job that has been linked to a changelist.
issue A unit of work tracked by the defect tracker, for example, a bug, a change request, or an enhancement request.
job A user-defined unit of work tracked by Perforce.
replicator A process that copies (replicates) data between a defect tracker and a Perforce server in order to keep each one up to date with changes made in the other. Replication allows developers to do their routine defect resolution work entirely from their Perforce client, without needing to use the defect tracker's interface. It also allows developers to relate their changes to defect tracking issues.
workflow A set of rules that control who can do what to which issues.

Copyright © 2000–2001 Ravenbrook Limited. This document is provided "as is", without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this document. You may make and distribute copies and derivative works of this document provided that (1) you do not charge a fee for this document or for its distribution, and (2) you retain as they appear all copyright and licence notices and document history entries, and (3) you append descriptions of your modifications to the document history.