我想使用 git 克隆一个 svn 存储库,但不幸的是,在哪里svn checkout
获取所有外部git svn clone
的存储库,只获取没有外部的存储库。如何通过 svn 存储库获取外部文件git svn
?我不想做任何花哨的事情,只需获取带有外部组件的完整存储库即可。
问问题
10311 次
3 回答
10
git-svn 不支持外部,但你可以尝试SmartGit代替 git-svn。它支持 svn:externals,将它们转换为 .gitsvnextmodules 文件并显示为模块。唯一的限制:您应该使用 SmartGit 克隆存储库,而不是打开已经存在的 git-svn 存储库。
于 2012-07-17T10:38:57.070 回答
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 脚本。此外,如果您的外部环境发生变化,您将需要再次执行类似的操作。
于 2013-01-24T00:33:13.930 回答
2
我在这里发布适用于我的解决方案
git svn show-externals | \
awk '/^\// { print "git svn clone "$3" ."$1" "$2":HEAD" }' | \
bash
于 2014-08-29T13:58:39.450 回答