代码之家  ›  专栏  ›  技术社区  ›  Justin Grant

GIT SVN创建的公共回购协议的公共和私人分支的推荐工作流程

  •  4
  • Justin Grant  · 技术社区  · 15 年前

    我试着设置三件事:

    1. 公共SVN回购的公共GIT镜像
    2. 回购协议的公共分支,多个参与者可以在其中发布补丁
    3. 来自#2的公共回购的私人分支

    我知道如何做#1,但我正在寻求关于#2和#3的建议:如何配置、如何保持同步、避免的事情等等。

    以下是更多细节:

    我正在使用一个基于SVN的开源web应用程序,它的补丁提交机制既慢又低效:补丁被附加到问题跟踪系统中提交的bug上,几周或几个月后,这些补丁进入主干。

    一个严重的问题是,我需要维护一个项目的私有分支,其中包含只有我的公司才需要的附加功能。但我想用一种简单的方式让我的叉子跟上最新的官方承诺。

    我想找出一个基于GitHub的解决方案来解决这两个问题。最后我想说三件事:

    • “镜子” -SVN的GitHub镜像,通过自动化流程(如 this article )我或其他补丁贡献者将运行。这将使我或其他人很容易创建项目的公共或私人分支,而不会与SVN发生冲突。
    • “contrib” -对于我自己和一些我信任的补丁提交者,我想建立一个公共分叉(或分支?)在“镜像”中,我们可以提交我们希望最终出现在SVN中的补丁。这也可能使核心提交者更容易、更高效地将补丁拉回到SVN中。
    • “我们的叉子” -最后,我们公司希望建立一个“contrib”的私有分支,多个开发人员可以添加只适用于我们公司实现的私有功能

    一些具体问题:

    • 这种方法有意义吗?我们是否应该使用更简单的解决方案?
    • 如何确保“contrib”与“mirror”保持同步?是否有GitHub魔法可以自动应用新提交,只要它们不冲突?假设没有,那么什么样的工作流程才能确保contrib与其父级保持同步呢?
    • “ourfork”在逻辑上是“mirror”的孙子。通过“镜像”和“contrib”的更改,正确的工作流程是什么?我应该把“contrib”设为我唯一的遥控器吗?或者将两者都设置为远程设备——如果是的话,合并的正确过程是什么?

    我读了@rq的 answer 一个类似的问题,我怀疑它回答了上面的大部分问题,但我是一个Git新手,我不确定他的答案是否适用于我的案件。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    我建议你看看 SubGit 它是一个工具,可以创建并保持与SVN存储库链接的Git存储库的同步。与其他解决方案相比,它具有以下优势:

    • 并发安全提交(如果其中一个参与者提交到Git中 在同一毫秒内又一次进入SVN,没什么不好的 将会发生:如果他们的变化发生冲突,其中一人将得到 过期错误)
    • 更好的SVNGit概念翻译,如忽略、EOL、任意 分支(不仅仅是主分支)和标签等等。

    但是有一个限制:您应该有权访问SVN服务器,因此基于GitHub的解决方案可能无法工作。但是你可以看看GitHub的替代品,比如GitLab、Luna工具和其他( Git Server Like GitHub? ).

        2
  •  1
  •   Thomas Ferris Nicolaisen    15 年前

    我不能给出一个完整的答案,因为你的设置要求很高。

    我可能会尝试让一名SVN提交人加入。然后,我会让他负责在git svn克隆上重新设置功能分支,然后再将更改提交回Subversion。我最近做了一个非常简单的工作流示例 in a screencast .

    不过,这确实需要与一位SVN提交者进行非常紧密的反馈循环,为了保持历史的线性,您必须进行大量的重定基址,这也使得分布式存储库很难保持同步。我不确定这对你是否有效。

    推荐文章