[Buildbot-devel] change source tracking CVS tags

Bailey, Darragh dbailey at hp.com
Thu Jan 31 10:56:46 UTC 2008


Including email from offlist
> -----Original Message-----
> From: djmitche at gmail.com [mailto:djmitche at gmail.com] On Behalf Of Dustin
> J. Mitchell
> Sent: 30 January 2008 14:20
> To: Bailey, Darragh
> Subject: Re: [Buildbot-devel] change source tracking CVS tags
>
> On Jan 30, 2008 6:34 AM, Bailey, Darragh <dbailey at hp.com> wrote:
> > __init__(self, cvsroot, cvsmodule, cvsglobal_options=[], branch=None,
> > login=None, pollinterval=600, remote=True, env=[])
> <description snipped>
> This looks great!
>
> > 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.
>
> This is usually the duty of the scheduler and its tree-stable timer.
> This will be particularly necessary with CVS, since it doesn't have a
> notion of "revision", and must use a timestamp (cvs option -D)
> instead.

I think you misunderstood the problem I was referring to. When you do a multi-file commit in cvs, you are not guaranteed that the timestamp of the change will be the same on all the files. You can make a commit of many files and get a 3-4 second difference in the commit time in the first and last files. So the code could actually poll and see half of a changeset, and then get the rest of the changeset the next time. Very rare and unlikely to happen, but can occur because cvs change set transactions are not atomic, only individual file commits are.

The problem I was suggesting that might be good to solve is to combine multi-file commits and list them as a single change entry rather than have the poller see them as separate file commits and have 2 entries a few seconds apart.

Since I can already predict the problem, might as well try to code to avoid it. Tools such as FreshCVS and other commit trigger based systems already handle this by waiting until the full commit is finished and then sending a single change set to the listener. I think the poller should look to send the same results.


> > 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.
>
> Yes, and there are a few other pollers in the codebase too.  This
> would certainly be a bigger project. but is probably worthwhile :)

Probably, but first I'll start with just getting the cvs poller to work :)

I've also realised that a cvs poller won't do what I want, and that is report on tags movement. Doh! So it looks like I will still need to write some custom hooks for my cvs repository anyway.

--
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