git svn -使用git-svn访问混合分支文件夹布局



我正在尝试使用git svn连接到我们公司的存储库。我们有一个不太规范的分支目录。如何使用git svn访问这个已经讨论过了,然而,我们似乎在分支名称上有一个小的扭曲,这似乎使我无法获得所有的分支名称。

让我们考虑一个示例svn repo:

trunk/
tags/
branches/
    rootbranch/
    tku/subbranch

我们在分支目录的根级别有分支。但是我们在嵌套文件夹中也有分支。标签dir也是一样,但我认为这只是同样问题的第二个例子。

如果我使用git svn clone file:///tmp/gitsvn/svnrepo git-clone -s,我只得到根分支,如预期的那样:

/tmp/gitsvn/git-clone$ git branch -r
  rootbranch
  tku
  trunk

但是如果我克隆使用_git svn克隆文件:///tmp/gitsvn/svnrepo git-clone2 -b branches//_,我只得到子分支:

/tmp/gitsvn/git-clone2$ git branch -r
  tku/subbranch

有办法两者兼得吗?

可以通过在git-svn配置中添加多个分支行来访问其他分支。

中。在Git/config文件中,会有一个类似下面的部分:

[svn-remote "svn"]
  url = http://server/svn
  fetch = trunk:refs/remotes/trunk
  branches = branches/*:refs/remotes/branches/*
  tags = tags/*:refs/remotes/tags/*

只需为分支的额外目录添加另一个条目。例如:

branches = branches/tku/*:refs/remotes/branches/tku/*

然后执行git svn fetch命令从svn存储库中检索分支。

我相信在构建git存储库时也可以创建这种设置,在clone命令中使用多个-b选项。
git svn clone http://svn.foo.org/project -T trunk -b branches -b branches/tku -t tags

对于其他绊倒在这一点上的人:似乎两者都是不可能的。Subversion允许分支的混合设置,但不鼓励这样做,因此git不支持这种设置似乎没有问题。我的解决方案是将所有分支置于同一级别,然后忘记问题并继续前进。无论如何,只有一层分支似乎更好。

最新更新