At my work, we have been using a Git branching strategy based on Vincent Driessen’s successful Git branching model. Over all, the strategy that Vincent proposes is very good and may work perfectly out of the box for many cases. However, since starting to use it I have noticed a few problems as time goes on:
- a LOT of branches - Since Vincent’s model has a branch for each release version, over time you get a lot of branches lying around.
- Redundant - At any given time, we will have 3 identical entities:
masterBranch (after release-1.0 has been merged in)
- A version Tag (1.0)
- Changes to every build – We use Jenkins CI and we currently have to change each job to point to the new tag or branch. It get’s a little tedious and won’t scale in the long run.
Fortunately, these problems are easy to fix. In fact, the fixes simplify the model and allow simpler automation.