Version Control with Subversion, 2nd Edition
by C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick
Common Branching Patterns
There are many different uses for branching and svn merge, and this section describes the most common ones.
Version control is most often used for software development, so here’s a quick peek at two of the most common branching/merging patterns used by teams of programmers. If you’re not using Subversion for software development, feel free to skip this section. If you’re a software developer using version control for the first time, pay close attention, as these patterns are often considered best practices by experienced folk. These processes aren’t specific to Subversion; they’re applicable to any version control system. Still, it may help to see them described in Subversion terms.
Release Branches
Most software has a typical life cycle: code, test, release, repeat. There are two problems with this process. First, developers need to keep writing new features while quality assurance teams take time to test supposedly stable versions of the software. New work cannot halt while the software is tested. Second, the team almost always needs to support older, released versions of software; if a bug is discovered in the latest code, it most likely exists in released versions as well, and customers will want to get that bug fix without having to wait for a major new release.
Here’s where version control can help. The typical procedure looks like this:
Developers commit all new work to the trunk. Day-to-day changes are committed to /trunk: new features, bug fixes, and ...