Attaching External SVN Repositories - svn:externals

The scenario:

  • You are using subversion as the version control software for your project
  • Your project depends on other projects, perhaps third party libraries
  • The other projects also use subversion as the version control software for their project

How do you keep track of the version changes in the external project? Check out the external project to a particular directory in your project and keep it up to date by periodically issuing the command 'svn up'. This method works. But wouldn't it be cool if svn handled it automatically for you?

svn:externals is the solution.

I work on many PHP projects that depend on the Zend Framework. I use subversion for these projects. Zend Framework also uses subversion. Zend Framework has a fairly faster release cycle. Every time the Zend Framework makes a release, I want my project to use the latest Zend Framework release. Here's how I do it.

I have stored the Zend Framework files in my library/Zend directory.

Make sure you have set the SVN_EDITOR environment variable to your favourite editor.

Step 1: Navigate to the library directory.

cd path/to/library

Step 2: Make sure your working copy is up to date.

svn up

Step 3: Edit the svn:externals property of the current directory.

svn propedit svn:externals .

The editor window opens. In the editor window type the directory name and the external project SVN URL separated by a space. Save the file and exit.

Step 4: In my example, I want to store the Zend Framework files in the directory library/Zend. The SVN check URL of the Zend Framework ie http://framework.zend.com/svn/framework/standard/tags/release-1.9.3PL1/library/Zend

Zend http://framework.zend.com/svn/framework/standard/tags/release-1.9.3PL1/library/Zend

Step 5: Update the working copy again

svn up

You should now have the external repository files in your working copy.

Step 6: Commit the changes.

svn commit -m "added an external repository"

When the Zend Framework releases a new version repeat the above simple steps and set the appropriate svn:extrenal URL.

Isn't svn:externals a cool subversion feature?

Reference:
SVN Book externals definitions page.

Taxonomy upgrade extras: 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.