I want to use git to clone a svn repository, but unfortunately, where svn checkout
gets the repo with all externals, git svn clone
only gets the repository without externals. How can I get the externals from the svn repository via git svn
? I don't want to do any fancy stuff, just get the the complet repo with externals.
git-svn doesn't support externals, but you may try SmartGit instead of git-svn. It supports svn:externals, converting them into .gitsvnextmodules file and displaying as modules. The only restriction: you should clone the repository with SmartGit instead of opening already existing git-svn repository.
I have been use git as a front end to access a SVN repository. The structure in SVN is generally pretty simple such that there is top level directory which has the externals in it and no externals in sub-directories. Also the externals don't really change much once they are added in. So assuming something like:
git svn clone X
cd X
I have had success getting all the externals with the following command:
git svn show-externals | \
perl -ne 'if (/^\/(.*) (.*)/) { print "git svn clone $1 $2\n"; }' | \
bash
I guess a more complicated structure for externals would require a more complicated perl script. Also, if your externals change you will need to do something similar again.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With