Creating a Branch

Creating a branch is very simple—you make a copy of the project in the repository using the svn copy command. Subversion is able to copy not only single files but whole directories as well. In this case, you want to make a copy of the /calc/trunk directory. Where should the new copy live? Wherever you wish—it’s a matter of project policy. Let’s say that your team has a policy of creating branches in the /calc/branches area of the repository, and you want to name your branch my-calc-branch. You’ll want to create a new directory, /calc/branches/my-calc-branch, which begins its life as a copy of /calc/trunk.

You may already have seen svn copy used to copy one file to another within a working copy. But it can also be used to do a remote copy entirely within the repository. Just copy one URL to another:

$ svn copy http://svn.example.com/repos/calc/trunk 
           http://svn.example.com/repos/calc/branches/my-calc-branch 
      -m "Creating a private branch of /calc/trunk."

Committed revision 341.

This command causes a near-instantaneous commit in the repository, creating a new directory in revision 341. The new directory is a copy of /calc/trunk, as shown in Figure 4-3.[20] While it’s possible to create a branch by using svn copy to duplicate a directory within the working copy, this technique isn’t recommended. It can be quite slow, in fact! Copying a directory on the client side is a linear-time operation, in that it actually has to duplicate every file and subdirectory on the local disk. Copying a directory on the server, however, is a constant-time operation, and it’s the way most people create branches.

Repository with new copy
Figure 4-3. Repository with new copy


[20] Subversion does not support copying between different repositories. When using URLs with svn copy or svn move, you can only copy items within the same repository.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset