【问题标题】:How do I handle two project variations with two Mercurial repositories?如何使用两个 Mercurial 存储库处理两个项目变体?
【发布时间】:2011-02-20 15:53:08
【问题描述】:

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

我们有一个用于 GPL 应用程序的主要 Mercurial 存储库。

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

到目前为止我做了什么:

  1. 创建了一个新的comm repo
  2. 提交了商业应用的第一个版本(无历史记录)
  3. comm推送到远程主机
  4. 修改开源 repo
  5. 试图从 open-source 推送到远程 comm,hg 说 repos 不相关
  6. 尝试使用 -f(强制)选项从 *open-source'* 推送到 comm,hg 现在只显示警告

第 6 步的问题是我会将所有变更集推送到 comm 存储库,这是不正确的。我基本上想从给定的时间点推送更改(非常像合并两个 SVN 分支)。

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

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

【问题讨论】:

  • 我认为这里的主要问题是您从不相关的存储库开始。您应该将商业版本创建为开源版本的克隆,然后将所有更改推送到它。
  • 好吧,我可以重新开始,没问题。你的意思是我可以从一个特定的版本开始克隆(比如最后一个)?

标签: mercurial repository


【解决方案1】:

使用像 mercurial 这样的分布式版本控制系统,您将在步骤 1 中克隆源存储库,在起点有两个具有相同内容的存储库,即 open-sourcecomm em> 正如你所说的那样。您将在 comm 存储库中进行初始更改。随着 open-source 存储库中的开发进行,您会定期将更改拉入 comm 存储库并将这些更改与那里的更改合并。这将在 comm 存储库中产生额外的合并变更集。只要您不将它们推回 open-source 存储库,您就不会在那里看到它们,它们也不应该在那里打扰它们,但我理解这就是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2021-04-30
    • 2019-12-22
    • 2013-06-27
    • 2010-09-05
    • 2013-09-13
    相关资源
    最近更新 更多