<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Tracker Requirements and Design</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000099" vlink="#660066" alink="#FF0000">
<div align="center">
<p>
<a href="http://www.ravenbrook.com/">Ravenbrook</a> /
<a href="http://www.ravenbrook.com/project/">Projects</a> /
<a href="http://www.ravenbrook.com/project/p4dti/">Perforce Defect Tracking Integration</a> /
<a href="../../index.html">Version 2.0 Product Sources</a> /
<a href="../index.html">Design</a>
</p>
<p><i><a href="http://www.ravenbrook.com/project/p4dti/">Perforce Defect Tracking Integration Project</a></i></p>
<hr />
<h1>Tracker Requirements and Design</h1>
<address>
<a href="mailto:rc@vaccaperna.co.uk">Robert Cowham</a>,
<a href="http://www.vaccaperna.co.uk">Vaccaperna Systems Ltd</a>, 2004-02-09
</address>
</div>
<h2><a id="section-1" name="section-1">1. Introduction</a></h2>
<p>This document describes the Serena (was Merant and before that PVCS) Tracker integration - for
Tracker versions 7.5 and 8.0.</p>
<p>The purpose of this document is to act as a reference while
developing P4DTI code which interacts with Tracker.</p>
<p>The intended readership is P4DTI developers.</p>
<p>This document is not confidential.</p>
<h2><a id="section-2" name="section-2">2. Tracker overview</a></h2>
<p>Tracker is a defect tracking system, produced by Serena (Merant/PVCS) with a
Windows GUI front-end and with a flexible back-end, e.g. SQL Server. It has a C
API which is directly callable from Python (via a specific module).</p>
<h2><a id="section-3" name="section-3">3. The requirements</a></h2>
<p>This integration was performed for a specific client with specific
requirements. There was no budget for generalising or testing general features.
However, the resulting integration followed the guidance in the
<a href="../../manual/ig/index.html">P4DTI Integrator's Guide</a> quite closely
and should be relatively easily extenable.</p>
<p>The requirements are listed below.</p>
<p>The SCR system is the master issue tracking system, Perforce jobs are used to
integrate SCRs to Perforce. Hence Tracker is the authority and master for
any issue data. </p>
<p>For each SCR there will be a Perforce Job of the name "SCR<scr number>", for
example "SCR08712". </p>
<p>Jobs created in Perforce will not be replicated to tracker (they will be
ignored). </p>
<p>Perforce actions concerned with creating, editing or closing Jobs will
automatically update the SCR module associations corresponding to the Job's
changelists. </p>
<p>Fields to be replicated from Tracker to Perforce are: </p>
<ul>
<li>ID</li>
<li>Title </li>
<li>Description</li>
<li dir="ltr">
<p dir="ltr">Resolution (equivalent to Status)</li>
<li dir="ltr">
<p dir="ltr">Owner </li>
</ul>
<p>Changes to any of these fields in Tracker will update the mapped Perforce
field, changes to these fields in Perforce will <b>not</b> be replicated to
Tracker.</p>
<p>When a job is closed (for example by successful submit of a change list), the
following fields will automatically be updated in Tracker: </p>
<ul>
<li>Resolution (equivalent to Status)</li>
<li>Fixed Date</li>
<li>Module Associations (with the relevant entity revision information) </li>
</ul>
<p>Any other changes in Perforce will not be replicated to Tracker. </p>
<p>All changes are logged - any change made to SCRs by Perforce will add additional
note/comment entries to the effected SCRs. </p>
<p>All integration operations to Tracker will show up as being made by the user
(rather than by the server account) - this requires all users to have a "known"
password.</p>
<h2><a name="section-3">4</a><a id="section-4" name="section-3">. The Design</a></h2>
<p>The design basically followed the Integrator's Guide.</p>
<p>New modules:</p>
<ul>
<li>dt_tracker.py</li>
<li>tracker.py</li>
<li>configure_tracker.py</li>
</ul>
<p>The replicator uses the "transaction id" from Tracker to identify recent
changes. This value is stored in a tracker.ini file (in same dir as code)
between runs - not perhaps ideal, but sufficient for purpose.</p>
<p>The Module Associations requirement was implemented using the "replicate
fixes" feature - a configurable URL to the relevant changelists was inserted in
the module association - users can double-click on this to go to a P4Web browser
and view changelist details (e.g. files).</p>
<h2><a id="section-A" name="section-A">A. References</a></h2>
<p>See <a href="../../manual/ig/index.html">P4DTI Integrator's Guide</a>.</p>
<h2><a id="section-B" name="section-B">B. Document History</a></h2>
<table>
<tr valign="top">
<td>2004-02-09</td>
<td><a href="mailto:rc@vaccaperna.co.uk">RHGC</a></td>
<td>Created.</td>
</tr>
</table>
<hr />
<p> <small>This document is copyright © 2003-2004 Vaccaperna Systems Ltd. All rights reserved.</small> </p>
<p> <small>Redistribution and use of this document in any form, with or without modification, is permitted provided that redistributions of this document retain the above copyright notice, this condition and the following disclaimer.</small> </p>
<p> <small> <strong> This document is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holders and contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this document, even if advised of the possibility of such damage. </strong> </small> </p>
<div align="center">
<p><code>$Id: //guest/robert_cowham/perforce/p4dti-tracker/main/design/tracker-design/index.html#2 $</code></p>
</div>
</body>
</html>