Dominique Dumont


VcsTools::DataSpec::HpTnd - Hp Tnd custom data for HMS logs


 use VcsTools::DataSpec::HpTnd qw($description readHook);
 use VcsTools::LogParser ;

 my $ds = new VcsTools::LogParser 
   readHook => \&readHook,
   description => $description
  ) ;


This class contains all the custom information needed to retrieve our data from our database using the generic VcsTools::LogParser class.

The $description hash ref defines the informations that are contained in the log of each version of the HMS file.

Needless to say this file is tailored for HP Tnd needs and HMS keywords. Nevertheless, it can be used as a template for other VCS systems and other needs.



Taken from 'state' HMS field. It can be either Dead Exp Team Lab Special or Product according to the level of confidence.


Taken from 'branches' HMS field. List the branches of a version. read-only value.


Taken from 'Author' HMS field. Name of the author of the revision or the name of the last guy who modified the HMS log.


Date of the archive. Set by HMS. read-only value.

merged from

Specifies if this version is a merge between the parent revision and another revision.

comes from

Explicitely specifies the parent revision. Use this field when the parent cannot be infered. For instance, when the revision number jump from 1.19 to 2.1, set the 'comes from' field of the revision '2.1' to '1.19'.


The original writer of this version. Since HMS changes the 'Author' field whenever you edit the history of a version, this field keeps track of the guy who actually archived this version.


Keyword which refers to the functionnality added in this version. (could be 'ANSI', 'cosmetic', 'doc_update' ...).


Official names of the bugs fixed in this version (a la 'GREhp01234').


Miscellaneous comments about this version.


The 3 following keywords try to provide a model for changes introduced with each revision of a file.

behavior change

Specify whether this code can smoothly replace the previous revision. Can be 'none', 'cosmetic', 'minor','major'

Still need a clear definition of what it means.

interface change

Specify the amount of change seen from the compiler's point of view. For a header file, for instance, 'cosmetic' might mean 're-compilation needed', 'major' might mean 'code change needed in user code'.

Can be 'none', 'cosmetic', 'major'

inter-peer change

Specify whether this code can inter-work with the previous revision.

Can be 'none', 'cosmetic', 'major'


readHook(hash ref)

This method will try to get more information from the log of each revision.

If the 'fix' field is empty, readHook will look for GREhpxxxx keywords in the log to guess what was fixed in this revision. Of course, it may guess wrong if the log contains "Gee I forgot to fix GREhp00007".

If the 'keywords' field is empty, readHook will look for keywords matching /\b([A-Z\d]{2,})\b/ in the log to guess what was added in this revision. The result is often relevant, but is sometime silly.


Dominique Dumont,

Copyright (c) 1998-1999 Dominique Dumont. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.