Suppose it's your job to maintain a document for
a division in your company—a handbook of some sort. One day a
different division asks you for the same handbook, but with a few
parts “tweaked” for them, since they do things slightly
differently.
What do you do in this situation? You do the
obvious: make a second copy of your document and begin maintaining
the two copies separately. As each department asks you to make
small changes, you incorporate them into one copy or the
other.
You often want to make the same change to both
copies. For example, if you discover a typo in the first copy, it's
very likely that the same typo exists in the second copy. The two
documents are almost the same, after all; they differ only in
small, specific ways.
This is the basic concept of a
branch—namely, a line of development that exists
independently of another line, yet still shares a common history if
you look far enough back in time. A branch always begins life as a
copy of something, and moves on from there, generating its own
history (see Figure 4.1, “Branches of
development”).
Branches of development