繁体   English   中英

git svn - 所有外部的克隆回购

[英]git svn - clone repo with all externals

我想使用git来克隆svn存储库,但不幸的是,在svn checkout获取所有外部的repo时, git svn clone只获取没有externals的存储库。 如何通过git svn从svn存储库获取外部代码? 我不想做任何花哨的东西,只需要获得外部的complet repo。

git-svn不支持外部,但您可以尝试使用SmartGit而不是git-svn。 它支持svn:externals,将它们转换为.gitsvnextmodules文件并显示为模块。 唯一的限制:您应该使用SmartGit克隆存储库,而不是打开现有的git-svn存储库。

我一直使用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脚本。 此外,如果您的外部变化,您将需要再次做类似的事情。

我在这里发布的解决方案适合我的情况

git svn show-externals | \
  awk '/^\// { print "git svn clone "$3" ."$1" "$2":HEAD"  }' | \
  bash

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM