svn can and does do merge control, you just have to take a note of version numbers (boring). However, we use svk which is a wrapper on top of svn, and it is extremely useful. It allows you to do stuff like this:
Trunk: /local/trunk
Branch1: /local/branches/branch1
Branch2: /local/branches/branch2
Person 1 is working on Branch1 and decides to roll what they have done so far to trunk. They issue the command:
code:
svk push -l
This merges branch1 with trunk, in essence 'pushing' the branch back into its parent. The -l switch tells svn to lump all the changes together. If you omit the -l it will commit incremental changesets, depending on the number of pulls that have been done on the branch (see below to read about pulls)
You can even do:
code:
svk push -lC
which is a pretend push, so you can sanity check all the changes.
The even more cool bit comes when the person working on branch2 comes to work on it. They simply issue:
code:
svk pull
which pulls all changes from the parent branch (in this case trunk) into your branch (in this case branch2).
So all of the changes made on branch1 are now pulled into branch2. Awesome!
where I work, there can typically be up to 20 projects on the go at any one time, each with its own branch. This system works remarkably well, you can even merge branches with branches and branch from a branch (which I frequently do). As a rule of thumb everyone working on a branch will do an svk pull every morning, first thing. This keeps everyone up to date and conflict free.
Also, consider the scenario where two projects are being worked on, both of which are heavily dependent on each other whilst at the same time being developed on separate branches.... it makes sense to test the two together, which you can do with svk by simply creating a third 'test' branch and 'smerging' the two development branches into the test branch, which is then typically deployed onto the QA platform. It really does open up a whole new world of flexibility.
I also believe subversion 1.5 will have similar abilities (so you can do away with the svk wrapper) when that is released.
EDITED: 23 Jul 2007 08:09 by THE_TGG