Good article on branching techniques for Subversion.
Subversion is great software, essentially a major upgrade of CVS. Its branch support is stellar, for a few reasons:
* Visibility: Branches are physical copies, you can see all branches, stored by convention in the /branches folder. This is unlike CVS (or VSS) where branches are placed in the time dimension and are invisible, hidden “behind” the CVS HEAD revision.
* Efficiency: Branches are calculated as deltas and are not full physically copies, they are efficient and cheap to create.
* Global revisoning: the entire repository gets versioned on every change. As a result merging can be applied as the merging of two source trees; this is much easier to think about and execute than merging between two sets of files, as is the case with CVS.
Nonetheless there are some things you still need to take care of. As well as that many developers have learned to dread branches, either becasue of poor practices or weak tools, or both. With that here are twelve tips for working with branches in Subversion