Note: This page deals with the cost of creating different development branches on a project, not the CostOfCpuBranchInstructions?.
BrettNeumeier provided me with this RuleOfThumb for the CostOfBranching:
- A branch that lives for a few hours (and is then merged back to the trunk) can usually be integrated in about half an hour or less.
- A branch that lives for a week can usually be integrated in about a day.
- A branch that lives for a month can usually be integrated in about a week.
- A branch that lives for two months can usually be integrated in about two months.
Or, perhaps put another way, the time it takes to merge changes from the branch to the head (or from the head to the branch) starts out as trival. But the more time passes, the less trivial it becomes until, at say 2 months or so, the "integration" becomes a re-implementation costing the same on the head as it did on the branch.
Obviously, lots of variables will impact the actual cost, but these notions may serve us well when we are forced to plan a branch.
See also ContinuousIntegration
This is very dependent on how often changes from the parent are
integrated down. If you regularly integrate then it's not as big
a problem.
It also depends on a whole bunch of other things:
- How good your ConfigurationManagementSystem? is
- How much work happens in the two branches--if one is a "bugfix release", merging that in probably isn't too hairy.
- If the two branches have changes in different areas of the codebase (and you don't do anything to break interfaces), those branches are simpler.
- If, on the other hand, multiple divergent edits are performed on the same set of files, then oy vey... BeenThereDoneThat.