13

我想使用 git 克隆一个 svn 存储库,但不幸的是,在哪里svn checkout获取所有外部git svn clone的存储库,只获取没有外部的存储库。如何通过 svn 存储库获取外部文件git svn?我不想做任何花哨的事情,只需获取带有外部组件的完整存储库即可。

4

3 回答 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 回答