Another nice feature of Subversion’s model is that branches and tags can have finite lifetimes, just like any other versioned item. For example, suppose you eventually finish all your work on your personal branch of the calc project. After merging all of your changes back into /calc/trunk, there’s no need for your private branch directory to stick around anymore:
$ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \ -m "Removing obsolete branch of calc project." Committed revision 375.
And now your branch is gone. Of course, it’s not really gone: the
directory is simply missing from the
HEAD revision, no longer distracting anyone.
If you use svn checkout, svn switch, or svn
list to examine an earlier revision, you’ll still be able to
see your old branch.
If browsing your deleted directory isn’t enough, you can always
bring it back. Resurrecting data is very easy in Subversion. If there’s
a deleted directory (or file) that you’d like to bring back into
HEAD, simply use svn copy to copy it from the old
$ svn copy http://svn.example.com/repos/calc/branches/my-calc-branch@374 \ http://svn.example.com/repos/calc/branches/my-calc-branch \ -m "Restore my-calc-branch." Committed revision 376.
In our example, your personal branch had a relatively short lifetime; you may have created it to fix a bug or implement a new feature. When your task is done, so is the branch. In software development, though, it’s also common to have two “main” branches running ...