使用Mercurial维护程序的两个版本 - 克隆还是命名分支?

时间:2013-06-17 10:42:27

标签: mercurial branch

我们正在使用Mercurial来管理项目,但我们现在想要创建同一项目的“Lite”版本(即删除或简化某些功能的版本)。

由于Lite版本将与Full版本共享其大部分代码,我们正在考虑是否更好:

  1. 创建原始项目的克隆并将每个项目分开。
  2. 使用命名分支在同一存储库中维护项目的两个版本。
  3. 我们对版本控制软件相当新,这将是我们第一次使用命名分支。有人可以帮助概述每种方法的优缺点。哪种方法最容易维护两个项目之间的错误修复?

    谢谢,

    安德鲁

2 个答案:

答案 0 :(得分:0)

您可以使用任何 4种方法 - 它们具有或多或少相同的功能,并且仅在用于同步代码库的已用命令方面有所不同

对于“单独克隆”解决方案“......保持每个项目分离”是Bad Thing(tm)并违反DRY原则:重新使用的代码(Lite版本)必须保持在单一位置并且核心的更改从Lite repo to Full repo

注意

当我写了大约4个解决方案时,我想到了,除了克隆和命名分支也

  • MQ(Lite版本是存储库中的更改集,完整版本是位于同一个仓库中的Lie之上的MQ补丁
  • 子存储库| Guestrepo(精简版是superrepo,完整版功能是超级存储库中的一个或多个子存储库)

答案 1 :(得分:0)

遇到同样的问题,我偶然发现了这个问题。现在我找到了一个我想与你分享的解决方案。

假设我们有两个设备,A和B,它们都具有基本相同的固件,但具有应该保留的某些差异。因此,这两个版本保留在两个分支中 - AB

如果我现在对其中一个版本进行更改,我可以在某些条件下将它们合并到另一个版本。

条件是共同的先行者(共同基础)必须是"给予"分支。

为了确保这一点,你可以做到

hg debugsetparents . <other branch before the modifications>

执行此操作后,当前工作集就像两个分支的合并,除了数据保持稳定,i。即&#34;我们&#34;保持&#34;我们的&#34;东西。

在此之后,你可以做一个真实的&#34; 修改后与其他分支合并。

这样做的结果是你得到了给定分支中手动创建的公共基数与给定分支的最终状态之间的区别,从而产生了你想要获得的修改。