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

6
这是情况:我们有一个巨大的svn代码库,它是“主库”(因为它实际上是由另一家公司“拥有”的),我们希望使用git本地工作,以获得git提供的分支灵活性和速度。但我们不想克隆整个代码库。
代码库结构大致如下:
/trunk/project1/*
      /project2/*
/branches/branch/project1/*
                /project2/*
/tags/tag1/tag1a/project1/*
          /tag1b/project1/*
     /tag2/tag2a/project2/*

我只对project1感兴趣,但我想同时获取trunk和branches(tags不是很重要,但如果能得到它们会很好)。我可以使用以下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个回答

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/*

我基于git-svn手册的配置部分编写了这个。

是的,那个起作用了。一个奇怪的地方是,在我检出单个分支时工作的排除路径似乎在这里不起作用。我有 url = https://svn.company.com/svn/branches/branch1/project1 ignore-paths = ^baddir/而“baddir”没有从svn中获取。使用相同的ignore-paths但是上面的svn-remote defs,“baddir”被获取。 - Spencer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接