Monthly Archives: June 2013

Branch by abstraction and trunk based development

Recently I have been trying to figure out the best way to handle parallel development of bug fixes and new functionalities.

As I am using GIT (in front of an SVN repo) I thought about feature, release and hotfix branches as described in the excellent blog post A successful Git branching model by Vincent Driessen. Best used with the gitflow GIT extensions.

The model explains that “feature branches typically exist in developer repos only, not in origin” but this is not feasible for our team. Some feature branches take long to be developed (> 1 week, often > 1 month). You should not keep more than a couple of days work on your developer machine without pushing to the repository. (YMMV of course.)

Peer-reviewing a whole feature branch when development is finished (and merged and pushed back to the repository?) is just too hard. We like to review commit-by-commit — changes are much easier to follow and understand that way. If everyone on the team would use GIT we could push/pull changes to each other but this creates a lot of branch management overhead especially if you have many parallel feature branches. (At one point we had 9 feature branches and 6 release branches, at the same time.)
Read more »