如何用“子项目”的分支创建一个git克隆?

时间:2010-01-28 15:47:12

标签: svn git git-svn

情况就是这样:我们有一个巨大的svn存储库,它是“主人”(不能改变它,因为它实际上是由另一家公司“拥有”)。我们宁愿在git本地工作,以获得git提供的分支灵活性和速度。但我们不想克隆整个存储库。

存储库结构看起来大致如下:

/trunk/project1/*
      /project2/*
/branches/branch/project1/*
                /project2/*
/tags/tag1/tag1a/project1/*
          /tag1b/project1/*
     /tag2/tag2a/project2/*

我只对project1感兴趣,但我想同时拥有主干和分支(标签不是那么重要,但获得它们也会很好)。

我可以使用这些svn-remote设置克隆一个分支:

[svn-remote "svn"]
    url = https://svn.company.com/svn/branches/branch1/project1

但我真的想要获得分支结构。我考虑过使用ignore-paths:

[svn-remote "svn"]
    ignore-paths=^project2|^project3|...

但是每次添加新的顶级“项目”目录时我都必须更新忽略路径,这是不可持续的。

其次,我们确实只需要/ tags / tag1中的标签(如果我们需要标签)。任何关于如何做到这一点的想法将不胜感激。

1 个答案:

答案 0 :(得分:6)

我认为.git / config文件中的以下内容应该有效:

[svn-remote "svn"]
  url = https://svn.company.com/svn
  trunk = trunk/project1:refs/remotes/svn/trunk
  tags = tags/*/project1:refs/remotes/svn/tags/*
  branches = branches/*/project1:refs/remotes/svn/branches/*

我的基础是configuration section of the git-svn manpage