我正在尝试使用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不支持这种设置似乎没有问题。我的解决方案是将所有分支置于同一级别,然后忘记问题并继续前进。无论如何,只有一层分支似乎更好。