Branching patterns and strategies - Lars Bendix

The word "software" in Software Configuration Management means that we open up for new ways that people can work in parallel since we are not working on physical pieces of hardware but copies of digital information.

Wayne Babich identified the "Double Maintenance" problem, advicing people to avoid it by eliminating copies or synchronizing them as soon as possible. However, he did not give much practical advice since there was very little understanding of the problem at that time - and even less tool support.

Modern version control tools all support branching to allow for parallel streams of development. They also have - internally or externally - merge support for "pulling things together" when the different pieces of work have to be co-ordinated and synchronized.

Appleton and friends tried to make sense of the cowboy-style bonanza of branching and merging that this new-found freedom gave. They establish a terminology for problems and solutions related to branching and merging so we can talk about it without misunderstandings. They give general guidelines for what to look out for when applying branching and merging. They distinguish a great number of different situations (tasks problems) that call for a branching and merging solution - and for each of these branching and merging patterns they discuss in which specific context they should be used and in which context they should be avoided.