[Buildbot-devel] change source tracking CVS tags

Bailey, Darragh dbailey at hp.com
Wed Jan 30 11:34:46 UTC 2008


A simple initial description of the CVSPoller constructor

__init__(self, cvsroot, cvsmodule, cvsglobal_options=[], branch=None, login=None, pollinterval=600, remote=True, env=[])

cvsroot: CVS repository to watch, in the form of /some/dir/cvs for local repositories, :pserver:anonymous at blah.com:/cvs, or user at blah.com:/cvs for non-anonymous. Anything that is an accepted value for CVSROOT as described in the cvs documentation.

cvsmodule: list or string of the module(s)/subdiretory(s) that should be watched.

global_options: list of strings to be inserted into the command line before the cvs command word. See 'cvs --help-options' for a list of valid options.

Branch: argument to specify which branch in the cvs to look for changes, defaults to None which means look at 'HEAD'.

login: a string to be provided to the cvs login command, used when a :pserver method is used to access the repository.

pollinterval: number of seconds between polls, default being ten minutes.

remote: whether to us log|rlog, defaults to rlog. If the cvsroot needs to be a local path, otherwise it will have to checkout a local copy of the tree before running the log command.

env: list of environment variables to override, some cvs settings cannot be altered except via the environment, such as CVS_RSH which allows you to change the default remote shell program from rsh to ssh.


Main problem looks to be in parsing and collecting all the changes from the cvs command.

I see the existing svnpoller uses xml logs to make parsing easier. So will need to write a suitable log parser for cvs, but that doesn't look too hard. I suspect it will be more difficult to collate the multi-file commits as a single change entry.

Possibly will want to ignore commits that occurred within a particular time limit of the poll to be able to catch the situation where a multi-file commit is occurring at that time. Obviously would need to work out how to catch that the next time around, without duplicating any change entries.


Possibly a better solution would be to get change svnpoller.py to be more generic and have a general repository poller class which is then extended for SVN, CVS and any other repository that it might be useful for.


Thoughts, corrections, implementations all welcome :)

--
Regards,
Darragh Bailey

Systems Software Engineer
Hewlett Packard Galway Ltd.
+353 91 75-4674

Postal Address:    Hewlett Packard Galway Limited, Ballybrit Business Park, Galway
Registered Office: Hewlett Packard Galway Limited, 63-74 Sir John Rogerson's Quay Dublin 2
Registered Number: 361933





More information about the devel mailing list