Migrated. Originally posted: 2008-11-26
I have worked on build systems at 4 companies. Some were branched, some were not. Some had web inerfaces, some were command-line only, some were cron-only.
A build system looks different than other software. It “only” has to build your software. Once it’s “done”, it looks like it won’t change.
And even if it does change, add a few config files and the same system can deal with old and new versions of your builds. At least only the recent old ones, because you never need to re-build anything older than what you support, and that only goes out a couple of revisions.
When you need to make wholesale changes to streamline parts of your build, clean up old parts that you don’t need to use anymore, you know, when the normal things that happen to normal software happen to your build system, then you will have to make it so.
Branch early. Branch to match the software you are building. Just branch.