[Buildbot-devel] feature: excluding files/folders from triggering a build

Brian Warner warner-buildbot at lothar.com
Wed May 10 17:08:13 UTC 2006

Yes, fileIsImportant() is specifically meant for avoiding builds because of
docs changes. The idea is that you don't want to waste builder time *now*,
but that those changes *are* part of the trunk and eventually they will be
built. If Change#10 is a docs change, then an hour later Change#11 comes
along which modifies code, the build isn't run until Change#11 happens, but
both 10 and 11 are considered part of the build. If that docs change *did*
happen to mess something up (maybe it also deleted a Makefile or something,
or your isFileImportant logic is out of date), you want the authors of both
10 and 11 to be on the hook for figuring out what went wrong. That, and the
fact that in general[1] you can't get a #11 tree without also getting #10, is
why fileIsImportant() only marks the changes as unimportant rather than
deleting/ignoring them altogether.

Mark's ignoreUnimportantChange patch is only appropriate for cases where
you're sending changes from multiple repositories into the same buildmaster,
and therefore (ab)using the "importance" mechanism to mark Changes which
aren't even part of a given tree. Hm, maybe we should add a field to the
Change that says "I'm part of subproject X", and a field to the Scheduler
that says "only use Changes from subproject X".

> This sucks because for some reason the SVN update step was updating to the
> highest revision of all of the pending changes (important and unimportant),
> and all of the changes were listed in the build when an important change
> finally came through.

Yeah, this is done specifically to achieve the "include that change
*eventually*" effect, so that the mapping of changes to builds does not
contain holes. It works for a linear change history, but not for a situation
where the Changes are actually for different repositories.

> >> My search for 'filter' in the documentation didn't return any  
> >> results, so I missed that :)

I'd be happy to take a docs patch to fix this :). fileIsImportant() is one of
the older features in the buildbot and as such hasn't received a lot of
documentation attention. (now that we have the buildbot.texinfo user's
manual, I make it a point to document new features before implementing them,
but the older stuff hasn't been through the same sort of discipline).

Which section did you first look to for a filtering feature? The
documentation of isFileImportant() should probably go into "Scheduler", since
it *is* a parameter of Schedulers, but the first section that you looked to
should definitely have a pointer to the Scheduler page.


[1]: Darcs would let you do this, but instead we pretend that it has a linear
     history just like all the other VC systems

More information about the devel mailing list