One branch is typical setup in the company when we were deploying agile way of working, since in old days, people are used with CVCS (Central Version Control System) and merging is really headache work at that time.
In Scott’s “why git is better than X”, it is also subversion-style workflow.
When one branch is introduced, it is a hot topic, and the solution we said is keep it local if it can’t be compiled or unit test successfully, but for prototype work and some architecture changes it is really challenge work for them, and in the end, mostly they use separate branch, but it looks break the rule for one branch.
We phase out the old version control system and towards the git system, but we didn’t benefit from git a lot yet, we really need to look into git to benefit from DVCS, powerful branch and flexible workflow are things we can use
Solution
Now when Git is introduced and improvement of CI technology, probably we could change our thinking to open for multi branch again, because it is the feature of Git and this is another reason we choose git !!
Surely don’t mess it up, it doesn’t mean everyone has branch and merge in the end.
It could be used in follow cases.
- prototype or changes with lots of impact will be done in seperate branch, and only passed by CI can be merged back to master branch
- only finished feature (like click “Done” in ALM system) will be merged into master branch, since sometimes unfinished features are useless for other teams.
In Manuel’s blog why ditributed ci is the logic next step, he even gave more thinking behind it, initial a private CI build, and CI build will automatically merge it to master branch if CI is sucessful, and also these should and could be done automatically.
Surely initial a local private CI build is not so simple, since maybe the build process last longer time (1 day), but why not ask questions like below
I want to have a private CI to make sure my changes are safe, and how I can do it in one hour?
Anyway, this is just the rough solution, but hope it can trigger some thinking when we go to git, the game is just started.
Summary
When a new tool is introduced, after the warming-up period, we need start to use its feature to maxium benefit from it, otherwise we loose the benefit for changes.
Reference
- Manuel: http://qualityswdev.com/2010/12/15/why-distributed-ci-is-the-logical-next-step
- Vincent: http://nvie.com/posts/a-successful-git-branching-model/
- Scott: http://whygitisbetterthanx.com/#any-workflow