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

如何使用两个Mercurial存储库处理两个项目变体?,mercurial,repository,Mercurial,Repository,我们有一个应用程序,它是开源的,发布为GPLv2。我们还有一个稍微不同的版本,有商业许可证。这两种变体之间的差异非常有限 对于GPL应用程序,我们有一个主要的Mercurial回购协议 我希望能够为商业应用程序保留单独的回购协议(主要是公开的),但我也希望能够定期“推动”对其进行更改(但不是相反)。考虑这些RePOS托管在托管Web服务的项目上。 到目前为止我所做的: 创建了一个新的通信回购协议 已提交商业应用程序的第一个版本(无历史记录) 将通信推送到远程主机 修改的开源回购协议 hg表示,他

我们有一个应用程序,它是开源的,发布为GPLv2。我们还有一个稍微不同的版本,有商业许可证。这两种变体之间的差异非常有限

对于GPL应用程序,我们有一个主要的Mercurial回购协议

我希望能够为商业应用程序保留单独的回购协议(主要是公开的),但我也希望能够定期“推动”对其进行更改(但不是相反)。考虑这些RePOS托管在托管Web服务的项目上。

到目前为止我所做的:

  • 创建了一个新的通信回购协议
  • 已提交商业应用程序的第一个版本(无历史记录)
  • 将通信推送到远程主机
  • 修改的开源回购协议
  • hg表示,他们试图从开源推广到远程通信,但回购协议并不相关
  • 试图通过-f(force)选项从“开源”推送到comm,hg现在只显示一个警告
  • 步骤6的问题是,我会将所有变更集推送到comm repo,这是不正确的。我基本上希望从给定的时间点开始推动更改(非常类似于合并两个SVN分支)

    我正在学习
    hg移植
    扩展,但这似乎有点复杂,无法定期使用


    我是Mercurial的新手,所以我可能做错了,所以也请建议解决相同问题的其他方法。

    对于Mercurial这样的分布式版本控制系统,您可以在步骤1中克隆源代码存储库,在起点处有两个具有相同内容的存储库,即您所称的开源和comm。您可以在comm存储库中进行初始更改。随着开发在开源repo中进行,您将定期将更改拉入comm存储库,并将这些更改与那里的更改合并。这将在comm repo中产生额外的合并变更集。只要你不把它们推回到开源回购,你就不会在那里看到它们,它们也不应该在那里打扰你,但我知道你无论如何都想要这些。

    我认为这里的主要问题是你从无关的存储库开始。你应该创建一个商业版本作为开源版本的克隆,然后把你所有的修改都推到它上面。我可以从头开始,没问题。你的意思是我可以从一个特定的版本(比如上一个版本)开始克隆吗?