首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SubGit:如何排除分支?

SubGit:如何排除分支?
EN

Stack Overflow用户
提问于 2013-05-16 13:02:57
回答 1查看 3.4K关注 0票数 6

我正在测试SubGit作为从SVN迁移到Git的一种方式。

我想要做的是能够在git存储库中创建远程分支,所有用户都可以使用这些分支,而不会将同步回SVN。

我只希望SubGit跟踪主分支并将其同步回SVN,这样我们就可以自由地使用和共享其他Git分支。

有什么简单的方法吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-16 15:17:24

理想的解决方案是指定主干:SubGit配置中的any /heads/主映射,这样SubGit就可以将主干与主程序同步,而忽略任何其他分支。

不幸的是,SubGit目前至少需要一个分支映射( 1.0.x和2.0.x版本)。也就是说,我们必须指定这样的东西:

代码语言:javascript
复制
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/*

由于您不打算同步所有Git分支,请考虑使用一些特殊的命名空间来解决这个问题:

代码语言:javascript
复制
trunk = trunk:refs/heads/master
branches = branches/*:refs/gitsvn/heads/*
...

因此,如果将主分支推送到中央Git存储库,则会将其转换为主干。但是,如果推送分支foo,SubGit将忽略该分支,因为refs/head/foo不同步范围。

合并提交带来的问题是:如果提交A是将分支foo合并到主服务器的结果,那么SubGit将在Subversion侧为提交A的相应父级创建分支/foo。如果您不希望将SubGit生成的分支包含到*分支/**命名空间中,请考虑在Subversion侧使用一些特殊的分支:

代码语言:javascript
复制
trunk = trunk:refs/heads/master
branches = gitsvn/branches/*:refs/gitsvn/heads/*
shelves = shelves/*:refs/shelves/*
tags = gitsvn/tags/*:refs/gitsvn/tags/*

在这种情况下,提交A的相同父级应该被发送到gitsvn/分枝/foo分支。

这是目前可用的最佳解决方案。我们还有一个版本2.1的特性请求,这将为您提供一个理想的解决方案,但要实现它还需要一些时间。

更新SubGit 3.0:

由于版本3.0.0 (目前的早期访问阶段,在http://subgit.com/eap下载) SubGit支持单分支布局,因此配置文件可能如下所示:

  1. 没有箱子,没有树枝,没有标签,也没有架子: svn url = http://host.com/repos/project 在这种情况下,项目目录直接映射到Git存储库中的主分支;SubGit忽略任何其他分支,从不创建货架,这意味着匿名Git分支不会与SVN同步。
  2. 单人行李箱,没有架子: svn url = http://host.com/repos/project主干=主干:参/头/主 在本例中,项目/主干目录映射到Git存储库中的主分支;SubGit忽略任何其他分支,从不创建货架。
  3. 带架子的单行李箱: svn url = http://host.com/repos/project后备箱=后备箱:参/头/主架=架/*:参/架/* 在本例中,项目/主干目录被映射到Git存储库中的主分支;SubGit忽略任何其他分支,但它将匿名分支转换为默认版本1.0.x和2.0.x。

希望这能有所帮助。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16588228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档