[Buildbot-devel] Unexpected clobbering

Eli Carter eli.carter at commprove.com
Mon Jul 9 20:20:55 UTC 2007


On Wednesday 04 July 2007, Brian Warner wrote:
> > The .buildbot-sourcedata file appears to be present and correct but I 
still
> > get clobbered.
> > Please could you explain to me every situation under which the CVS step
> > decides to do an non explicit clobber.
> 
> Take a look in buildbot/slave/commands.py at around line 1151
> (SourceBase.start). There's a clause that says:
> 
>         # do we need to clobber anything?
>         if self.mode in ("copy", "clobber", "export"):
>             d.addCallback(self.doClobber, self.workdir)
>         if not (self.sourcedirIsUpdateable() and self.sourcedataMatches()):
>             # the directory cannot be updated, so we have to clobber it.
>             # Perhaps the master just changed modes from 'export' to
>             # 'update'.
>             d.addCallback(self.doClobber, self.srcdir)
> 
> Each VC subclass implements sourcedirIsUpdateable() and sourcedataMatches() 
a
> bit differently, but in general:
> 
>  sourcedirIsUpdateable() returns False if the previous build used a patch, 
or
>  if the previous build did a 'cvs export' instead of a regular checkout.
> 
>  sourcedataMatches() returns False if the current build is using a different
>  branch than the previous build (or a different CVSROOT or CVSMODULE)

In the case of Subversion, changing between branches can be done with 'svn 
switch', which is, essentially, a superset of 'svn update'.  For large 
projects with a number of branches active, the clobber in that case gets to 
be pretty annoying.

Eli




More information about the devel mailing list