4

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

由于精简版将与完整版共享其大部分代码,我们正在考虑是否更好:

  1. 创建原始项目的克隆并将每个项目分开。
  2. 使用命名分支在同一个存储库中维护项目的两个版本。

我们对版本控制软件相当陌生,这将是我们第一次使用命名分支。有人可以帮助概述每种方法的优缺点。哪种方法可以最容易地维护两个项目之间的错误修复?

谢谢,

安德鲁

4

2 回答 2

0

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

对于“分离克隆”解决方案“...保持每个项目分开”是坏事(tm)并且违反了 DRY 原则:重用代码(Lite 版本)必须维护在一个地方,并且核心的更改从 Lite repo 拉到完整的回购

注意

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

  • MQ(Lite 版本是存储库中的变更集,完整版本是位于同一 repo 之上的 MQ-patch(es)
  • Subrepositories|Guestrepo(Lite 版本是 superrepo,完整版功能是 superrepository 中的一个或多个子存储库)
于 2013-06-17T11:04:13.550 回答
0

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

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

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

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

为了确保这一点,您可以这样做

hg debugsetparents . <other branch before the modifications>

这样做之后,当前工作集就像两个分支的合并,只是数据保持稳定,即“我们”保留“我们的”东西。

在此之后,您可以在修改后与其他分支进行“真正的”合并。

这样做的结果是你得到了在给分支中手动创建的公共基础和给分支的最终状态之间的差异,从而得到你想要得到的修改。

于 2014-03-07T11:27:04.657 回答