This is more for my benefit than anything else, but someone might find this useful.
Recently at work, I have taken on more responsibilities. Part of that includes branch control over a few web sites I work on. It took me a while to figure out how to manage everything properly and most of the stuff I found on the web wasn’t much help so I will explain it here.
The source control program I am using is SVN and the source code is stored on a server with SSH access.
Merge a Branch into Trunk
- Check out a copy of trunk:
svn co svn+ssh://server/path/to/trunk
- Check out a copy of the branch you are going to merge:
svn co svn+ssh://server/path/to/branch/myBranch
- Change your current working directory to “myBranch”
- Find the revision “myBranch” began at:
svn log --stop-on-copy
- Change your current working directory to trunk # Perform an SVN update:
- Now we can perform an SVN merge:
svn merge -rXXXX:YYYY svn+ssh://server/path/to/branch/myBranch
- Resolve any conflicts that arose during the merge
- Check in the results:
svn ci -m "MERGE myProject myBranch [XXXX]:[YYYY] into trunk"
That is it. You have now merged “myBranch” with trunk.
Updated: June 18th, 2008
Steps 2-4 can be replaced by a remote log lookup:
svn log --stop-on-copy svn+ssh://server/path/to/branch
My thanks to Samuel Wright for bringing that to my attention :-)
Bonus: Cutting a Branch
Cutting a branch is a lot easier than merging a branch. And as an added bonus, I will tell you how.
- Perform an SVN copy:
svn copy svn+ssh://server/path/to/trunk svn+ssh://server/path/to/branch/newBranch -m "Cut branch: newBranch"
That’s all there is to it.