Build system thoughts

Bill Barry after.fallout at gmail.com
Thu Dec 11 17:29:26 CST 2008


John D. Mitchell wrote:
> Some questions to help clarify the context:
>
> * How big/complex are your incremental/full builds?  In other words, 
> what's the purpose of your CI system?  Is this for the centralized 
> monitoring/reporting, pristine build environment, etc. or do you need 
> it because the builds are so large/complex that they can't be done 
> e.g., locally?
The builds generally aren't too complex, but they do take a couple of 
minutes (15-30 now usually, but this is constantly growing) for 
automated tests and such to run. The purpose for it is:
1. monitoring the health of the entire tree
2. being able to report on build state for any branch
3. find branches that both the developer and the tests say are good for 
merging into the main tree

Builds are small enough to be done locally, but it is unlikely that 
developers will run all tests for every build (or even every commit). It 
is much more likely that the dev will ensure the build compiles and 
*maybe* that what he is working on correctly runs. I don't want to even 
force the devs to do that, I want to encourage many small commits 
knowing that we can wait to merge them until after the developer feels 
the work is done and that the CI environment says the build successfully 
passes all tests.
>
> * What are you trying to gain by using branches instead of clones?
One of the big pain points for using clones is configuration when 
working on webapps and windows services. Every time we need to work in a 
different directory we need to open up IIS and switch the directory (or 
perhaps sets of virtual directories, we have one app that uses 3 vdirs, 
one for the app and 2 for webservices the app uses). We also have to 
remove and reregister a windows service every time we switch from one 
clone to another.
>
> * How do you deal with releases and other long-lived versions?
tag a release and branch for bugfixes (the same way we do now); I am not 
sure what you are asking here
>
> * How do you deal with feature branches that multiple people are 
> working on together?
Since all the feature branches are in the central repository, and are 
pushed and pulled from all the developers, we can simply update to them.



More information about the Mercurial mailing list