tags:

views:

49

answers:

2

I have a configuration question about SVN.

I have downloaded some code from a 3rd-party SVN (e.g., sourceforge or google-code). If I make local changes to this code, how should I back up my changes to my own svn?

I want to be able to pull down changes from the 3rd-party svn to diff with my own version.

(I am using intelli-j, but can use command line svn too.)

+1  A: 

The svn:externals feature might do what you want, but I found it complicated to work with. You can also read up on how to maintain vendor branches.

What you really are looking to do is create your own branch with your own changes in the third-party repository. Unfortunately, without commit access to the other repository you can't do this, since all branches are stored on the central svn server.

You might want to look into a DVCS like git or hg which will allow you to maintain local branches. You could use something like git-svn to keep up with changes from the svn repository and then maintain your branch locally in git.

Ken Liu
`svn:externals` provide no help if the poster cannot commit to the external repository.
Tim Henigan
right, I added a bit about vendor branches.
Ken Liu
+1  A: 

If you do not have commit privileges on the external SVN server, then you cannot commit your changes to that system. The code you pulled from the external SVN provider is permanently linked to the repository from which you pulled.

This is the fundamental difference between centralized and decentralized version control systems.

If you must stick with SVN, then you don't have many options. You can continue to perform 'svn update' to grab the latest changes from the external server, but your local changes will always be uncommitted differences in your local copy.

There are alternatives. The major distributed version control systems are able to work with SVN servers. See the following articles for more info:

Tim Henigan