我想使用git克隆一个svn存储库,但不幸的是,在svn checkout
得到回购与所有外部组件, git svn clone
只得到了仓库,但不会的外部。 我怎样才能得到通过SVN仓库的外部git svn
? 我不想做任何花哨的东西,只得到与外部组件的完满成功回购。
Answer 1:
混帐SVN不支持的外部,但您可以尝试SmartGit而不是混帐SVN的。 它支持的svn:的外部,将其转换为.gitsvnextmodules文件,并且显示作为模块。 唯一的限制:你应该克隆与SmartGit的仓库,而不是开放的已有的git-svn库。
Answer 2:
我一直使用混帐作为前端访问SVN仓库。 在SVN的结构一般是非常简单的,例如,有是有它的外部和子目录没有的外部顶级目录。 另外,外部组件没有真正改变很多,一旦他们在加入因此,假如是这样:
git svn clone X
cd X
我已经成功获得所有的外部使用下面的命令:
git svn show-externals | \
perl -ne 'if (/^\/(.*) (.*)/) { print "git svn clone $1 $2\n"; }' | \
bash
我猜的外部更复杂的结构需要更复杂的perl脚本。 另外,如果你的外部变化,您将需要再次做同样的事情。
Answer 3:
我在这里发布的解决方案,在我的情况下工作
git svn show-externals | \
awk '/^\// { print "git svn clone "$3" ."$1" "$2":HEAD" }' | \
bash
文章来源: git svn - clone repo with all externals