如何使用两个Mercurial存储库处理两个项目变体?

时间:2011-02-20 15:53:09

标签: mercurial repository

我们有一个应用程序,它是开源的,并以GPLv2的形式发布。我们的版本略有不同,并附有商业许可证。两种变化之间的差异非常有限。

我们有一个主要的Mercurial回购用于GPL应用程序。

我希望能够为商业应用程序保留一个单独的仓库(主要是公开的),但我也希望能够定期“推动”对它的更改(但不是相反)。请考虑这些存储库托管在托管Web服务的项目上。

到目前为止我做了什么:

  1. 创建了一个新的 comm repo
  2. 提交了商业应用的第一个版本(无历史记录)
  3. comm 推送到远程主机
  4. 修改开源 repo
  5. 试图从开源推送到远程 comm ,hg表示回购不相关
  6. 尝试使用-f(强制)选项从* open-source'*推送到 comm ,hg现在只显示警告
  7. 步骤6的问题是我会将所有变更集推送到 comm repo,这是不正确的。我基本上想要在给定的时间点推送更改(非常类似于合并两个SVN分支)。

    我正在学习hg transplant扩展,但这似乎有点复杂,可以定期使用。

    我是Mercurial的新手,所以我可能做错了,所以请提出解决同样问题的其他方法。

1 个答案:

答案 0 :(得分:1)

使用像mercurial这样的分布式版本控制系统,您将在步骤1中克隆源存储库,其中包含两个在起始点具有相同内容的存储库,即 open-source comm comm 存储库中进行初始更改。随着开发在 open-source repo中进行,您将定期将更改提取到 comm 存储库中,并将这些更改与其中的更改合并。这将在 comm repo中生成其他合并更改集。只要你不将它们推回到开源回购中,你就不会在那里看到它们,它们不应该在那里打扰,但这就是我理解你想要的东西。