我想使用git来克隆svn存储库,但不幸的是,svn checkout
获取所有外部的repo,git svn clone
只获取没有外部的存储库。如何通过git svn
从svn存储库中获取外部信息?我不想做任何花哨的东西,只需要用externals获得complet repo。
答案 0 :(得分:9)
git-svn不支持外部,但您可以尝试SmartGit而不是git-svn。它支持svn:externals,将它们转换为.gitsvnextmodules文件并显示为模块。唯一的限制:您应该使用SmartGit克隆存储库,而不是打开现有的git-svn存储库。
答案 1 :(得分:2)
我一直使用git作为访问SVN存储库的前端。 SVN中的结构通常非常简单,因此存在顶级目录,其中包含外部,而子目录中没有外部。一旦添加它们,外部的变化也不会太大。所以假设像:
git svn clone X
cd X
我使用以下命令成功获得了所有外部效果:
git svn show-externals | \
perl -ne 'if (/^\/(.*) (.*)/) { print "git svn clone $1 $2\n"; }' | \
bash
我猜一个更复杂的外部结构需要更复杂的perl脚本。此外,如果您的外部变化,您将需要再次做类似的事情。
答案 2 :(得分:1)
我在这里发布的解决方案适合我的情况
git svn show-externals | \
awk '/^\// { print "git svn clone "$3" ."$1" "$2":HEAD" }' | \
bash