Last several days I was trying to set up a proper local SVN (with svn:externals) to be able to:
- have a local SVN repository (simple)
- Keep track of changes I make to the 3rd party code (simple)
- merge official updates (remote SVN repo) from time to time
With SVN, that can be done with svn:externals set to a separate brunch which is merged to trunk from time to time.
I must confess I still have problems to implement this strategy, but the question is:
would it be simpler / preferable to implement with Git ?
3rd party code has Git repo as well.
Since I set up a local CVS now, I can go with any (Git/SVN).
What would you recommend? And if doing it with git, what commands do I look at? I read somewhere that merging is easier with Git, so would it be a better solution for my needs?
I would be grateful for your advices.
p/s/ I’m on Linux.
With SVN, you cannot track changes you make to a third-party repository. I know of no way to do that. (Unless I’m mistaken,
svn:externalsdoesn’t do that. Thesvn:externalsfeature just lets you choose a specific version from a third party repository, but you can’t commit changes inside it without committing to the external repository.)Git is designed to do exactly that — you create a fork, and merge changes from upstream. In fact, Git behaves this way by default. It requires no additional configuration. If the main project is Git, you can use
git submoduleas a rough equivalent tosvn:externals.