2

我有默认的公共分支和私有的功能分支。

default 1-----4-------8
         \     \
feature   2-3---5-6-7

当我对默认值进行更新时,我希望它们可用于功能分支。我可以通过重复合并来做到这一点,但最终我会得到很多合并。我对编辑历史没有问题;功能分支仅在我的本地存储库中。

我想做这个:

default 1-----4-8
         \       \
feature   2-3-----5-6-7

甚至更好:

default 1-4-8
             \
feature       2-3-5-6-7

我试着做:

hg rebase --dest 8 --source 5

但它将元素移动到错误的分支。

default 1-----4-8-5-6-7
         \       /
feature   2-3----

分支在不同的文件中有变化,因此无需担心复杂的合并。

编辑:

--keepbranches选项似乎在表面上做我想要的。但是合并提交信息似乎很奇怪:就像 MercurialHg 认为它仍然是默认分支,只是重命名为 feature -branch。这似乎有点骇人听闻,我不是 100% 相信这是要走的路。

4

1 回答 1

1

我认为您的工作流程更适合使用Mercurial 队列,而不是使用 rebase。

原因是当它曾经是 1 时将分支的父级更改为 8 并不是一件小事,但这正是您在使用 MQ 时得到的效果。

Mercurial 队列保留一组补丁,每个版本都有一个补丁,并且在您完成功能时可以根据需要轻松应用/取消应用。

在您的场景中,您将执行以下操作:

  1. 创建第一个补丁以包含变更集 2。
  2. 创建第二个补丁以包含变更集 3。
  3. 删除所有补丁
  4. 拉取变更集 4
  5. 应用所有补丁
  6. 为变更集 5 创建补丁
  7. 为变更集 6 创建补丁
  8. 为变更集 7 创建补丁
  9. 删除所有补丁
  10. 拉取变更集 8
  11. 应用所有补丁

这最终会出现在您想要的更好场景中的情况。

通常,您不必为每个变更集创建一个补丁。您将创建一个补丁并不断刷新它,直到您对它满意为止。

当您对该功能完成感到高兴时,您将完成补丁并推送,以允许团队的其他成员查看代码。

您可以查看本教程以开始使用 MQ。

于 2013-08-09T12:25:18.827 回答