【问题标题】:Recommended workflow for public and private forks of a public GIT-SVN-created repo公共 GIT-SVN 创建的仓库的公共和私有分叉的推荐工作流程
【发布时间】:2011-04-20 16:10:04
【问题描述】:

我正在尝试设置三件事:

  1. 公共 SVN 存储库的公共 GIT 镜像
  2. 该存储库的公共分支,多个贡献者可以在其中发布补丁
  3. 来自 #2 的公共 repo 的私有分支

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

这里有更多细节:

我正在使用一个基于 SVN 的开源 Web 应用程序,它的补丁提交机制缓慢且效率低下:补丁附加到问题跟踪系统中提交的错误中,几周或几个月后这些补丁就会进入后备箱。

一个单独的问题是我需要维护一个项目的私有分支,其中包含只有我的公司才需要的附加功能。但我想要一种简单的方法让我的 fork 能够及时了解来自主干的最新官方提交。

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

  • "mirror" - SVN 的 GitHub 镜像,通过我或其他补丁贡献者将运行的自动化过程(如在 this article 中)自动与最新的 SVN 更改保持同步。这将使我或其他任何人都可以轻松地创建项目的公共或私有分支,而不会弄乱 SVN。
  • “contrib” - 对于我自己和一些我信任的补丁提交者,我想建立一个“镜像”的公共分支(或分支?),我们可以在其中提交我们想要的补丁看到最终出现在SVN中。这也可以让核心提交者更轻松、更高效地将补丁拉回 SVN。
  • “ourfork” - 最后,我们公司希望建立一个“contrib”的私有分支,多个开发人员可以添加仅适用于我们公司实施的私有功能

一些具体问题:

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

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

【问题讨论】:

    标签: git github git-svn rebase


    【解决方案1】:

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

    • 并发安全提交(因此,如果其中一个贡献者提交到 Git 另一个在同一毫秒内进入 SVN,没什么不好 将发生:如果他们的更改发生冲突,他们中的一个会得到一个 “过期”错误)
    • 更好的 SVN↔Git 概念翻译,如忽略、EOL、任意 分支(不仅是 master)和标签等等。

    但有一个限制:您应该有权访问 SVN 服务器,因此您的基于 GitHub 的解决方案可能无法正常工作。但你可以看看 GitLab、Luna-tool 等 GitHub 替代品 (Git Server Like GitHub?)。

    【讨论】:

      【解决方案2】:

      我无法给出完整的答案,因为您的设置要求很高。

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

      这确实需要与 SVN 提交者之一进行非常紧密的反馈循环,并且为了保持历史线性,您必须进行大量的变基,这再次使分布式存储库难以保持同步。我不确定这是否适合你。

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        • 2011-12-20
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        相关资源
        最近更新 更多