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

时间:2011-04-27 16:20:14

标签: git-svn

我正在尝试使用git svn连接到我们的公司存储库。我们有一个略微非标准的分支目录。之前已经讨论过如何使用git svn访问它,但是,我们的分支名称似乎有一点点扭曲,似乎让我无法全部获取它们。

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

trunk/
tags/
branches/
    rootbranch/
    tku/subbranch

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

如果我使用 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

有两种方法可以同时使用吗?

2 个答案:

答案 0 :(得分:3)

可以通过向git-svn config添加多个分支行来访问其他分支。

.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存储库时,也可以使用克隆命令的多个 -b 选项来创建此设置。

git svn clone http://svn.foo.org/project -T trunk -b branches -b branches/tku -t tags

答案 1 :(得分:-1)

对于那些偶然发现这一点的人:似乎两者都不可能。 Subversion允许分支的混合设置,但是不鼓励,所以git似乎不支持这一点似乎没关系。我的解决方案是将所有分支都放到同一级别,然后忘记问题并继续前进。无论如何,只有一个级别的分支似乎更好。