Summary
Prev | Chapter 4. Branching and Merging | Next

## Summary

We covered a lot of ground in this chapter. We discussed the concepts of tags and branches and demonstrated how Subversion implements these concepts by copying directories with the svn copy command. We showed how to use svn merge to copy changes from one branch to another or roll back bad changes. We went over the use of svn switch to create mixed-location working copies. And we talked about how one might manage the organization and lifetimes of branches in a repository.

Remember the Subversion mantra: branches and tags are cheap. So don't be afraid to use them when needed!

As a helpful reminder of all the operations we discussed, here is handy reference table you can consult as you begin to make use of branches.

Table 4.1. Branching and merging commands

Action | Command
--- | ---
Create a branch or tag | `svn copy `URL1` `URL2``
Switch a working copy to a branch or tag | `svn switch `URL``
Synchronize a branch with trunk | `svn merge `trunkURL`; svn commit`
See merge history or eligible changesets | `svn mergeinfo `SOURCE` `TARGET``
Merge a branch back into trunk | `svn merge --reintegrate `branchURL`; svn commit`
Merge one specific change | `svn merge -c `REV` `URL`; svn commit`
Merge a range of changes | `svn merge -r `REV1`:`REV2` `URL`; svn commit`
Block a change from automatic merging | `svn merge -c `REV` --record-only `URL`; svn commit`
Preview a merge | `svn merge `URL` --dry-run`
Abandon merge results | `svn revert -R .`
Resurrect something from history | `svn copy `URL`@`REV` `localPATH``
Undo a committed change | `svn merge -c -`REV` `URL`; svn commit`
Examine merge-sensitive history | `svn log -g; svn blame -g`
Create a tag from a working copy | `svn copy . `tagURL``
Rearrange a branch or tag | `svn move `URL1` `URL2``
Remove a branch or tag | `svn delete `URL``

Prev | Up | Next
Vendor Branches | Home | Chapter 5. Repository Administration