开发者

How to create a git clone with branches of a "subproject"?

开发者 https://www.devze.com 2022-12-18 04:42 出处:网络
Here\'s the situation: We\'ve got a huge svn repository, which is the \"master\" (can\'t change this because it\'s actually \"owned\" by another company). We would prefer to work locally in git to get

Here's the situation: We've got a huge svn repository, which is the "master" (can't change this because it's actually "owned" by another company). We would prefer to work locally in git to get the branching flexibility an开发者_StackOverflow中文版d speed that git offers. But we don't want to clone the whole repository.

The repository structure looks roughly like this:

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

I'm only interested in project1, but I would like to have both trunk and branches (tags are not so important, but it would be nice to get them, too).

I'm able to get a single branch cloned with these svn-remote settings:

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

but I really want to get the branching structure, too. I have thought about using ignore-paths:

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

but I would have to update the ignore-paths every time a new top-level "project" directory is added, which is not really sustainable.

Secondarily, we really need only the tags in /tags/tag1 (if we need tags at all). Any thoughts on how to do that would be appreciated.


I think that the following in your .git/config file should work:

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

I based this on the configuration section of the git-svn manpage

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号