混帐SVN - 克隆回购了所有的外部(git svn - clone repo with all

2019-07-30 11:09发布

我想使用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