How do I keep an svn:external up to date using git-svn?

Viewed 27313

Treating my repository as a SVN repo, I get:

svn co http://myrepo/foo/trunk foo
...
foo/
  bar/
  baz/ -> http://myrepo/baz/trunk

Treating it as a Git repo, I get:

git svn clone http://myrepo/foo --trunk=trunk --branches=branches --tags=tags
...
foo/
  bar/

I can clone baz to my local machine elsewhere and add a symlink, but that's just a hack. Is there a way to have git svn rebase automatically pull in those changes when it updates everything else, just like svn up does?

8 Answers

The best means of integrating svn externals with git-svn that I've seen is this script, which clones your externals into a .git_externals/ directory and creates the symlinks and exclude files you need. I find this a simple and direct solution. YMMV.

Here is an older overview of other options for dealing with svn externals with git-svn. To me they look a little over-complicated and liable to break under subsequent Git use.

The solution I ended up using was just to symlink to other git-svn clones on my local box. This worked pretty well: it allows me to commit changes back, and it allows me to make local changes on project A just to get them into project B.

try this python script https://bitbucket.org/nytmyn/gitsvnext/overview

to checkout svn externals run following in your git repository

python /../gitsvnext/run update

run this to know what to put to .git/info/exclude

python /../gitsvnext/run list
Related