当所有子模块在同一级别上时,git-svn分支

时间:2014-01-20 14:37:10

标签: git-svn

我的项目使用svn,我很久以前就去了git。我已经使用git-svn很长一段时间了很多成功。但现在在一个新的雇主,我遇到了一些问题。

SVN的布局是:

http://path/to 
             /trunk/
                     submodule1
                     submodule2

             /branches/
                       branch1
                                   submodule1
                       branch2 
                                   submodule1
                                   submodule2

我检查了我的git-svn以跟踪每个子模块(我认为这是正确的方法)。

          git svn clone http://path/to/trunk/submodule1 
          git svn clone http://path/to/trunk/submodule2

这给了我行李箱,但我无法弄清楚如何跟踪每个分支。我想--prefix会帮助我,我不认为它会。

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

您应该能够在布局规范中使用通配符来实现此目的。即对于submodule1你会做什么

git svn clone --trunk=trunk/submodule1 
              --branches=branches/*/submodule1 \
              --tags=tags/*/submodule1 \
        http://path/to

(假设您的标签也遵循相同的模式)。对其他子模块重复相同的操作。

--prefix选项与此无关。它只是控制如何在结果git存储库中命名分支。没有选项,所有分支将直接在refs / remotes /下。如果你想要更像通常的远程分支布局,你可以使用例如。

git svn clone --prefix=svn/ ...

获取refs/remotes/svn/trunk, refs/remotes/svn/branch1等。该值会逐字地添加到生成的分支名称中,因此您需要尾随/或者最终会得到类似refs/remotes/svntrunk

的内容