Final post in “Branching Patterns”
As I said at the beginning of this long piece: branching is easy,
merging is harder. Branching is a powerful technique, but it makes me
think of goto statements, global variables, and locks for concurrency.
Powerful, easy to use, but easier to over-use, too often they become traps
for the unwary and inexperienced. Source code control systems can help to
control branching by carefully tracking changes, but in the end they can
only act as witnesses to the problems.
I’m not someone who says branching is evil. There are everyday
problems, such as multiple developers contributing to a single codebase,
where the judicious use of branching is essential. But we should always be
wary of it and remember Paracelsus’s observation that the difference
between a beneficial drug and a poison is dosage.