Mercurial 如何处理等效的变更集?

How does Mercurial treat equivalent changesets?

我的设置如下:我有一个带有默认分支和另一个命名分支的存储库 R "a"。在两个分支上,都存在一个文件 "myFile.txt"。我克隆了存储库 R,生成了克隆 R_1 和 R_2。现在我 "hg up default" 在 R_1 和 "hg up a" 在 R_2。在 R_1 和 R_2 的两个工作目录中,我 "echo 'a' >> myFile.txt"。随后,我分别在 R_1 和 R_2 中 "hg ci -m 'fix in default' and "hg ci -m 'fix in a'。接下来,我在两个目录中"hg push"。

在 R 中,我现在可以 "hg up default" 和 "hg up a" 并在两个分支中看到修复(这是预期的)。但是, hg log 似乎只反映了一个带有一条提交消息的变更集。我的感觉是 Mercurial 以某种方式发现变更集是等效的并且 "merges" 它们,这可能是提高效率的正确做法ci。

这是正确的吗?它是如何工作的?实际选择了哪个提交消息?这听起来像是人工设置ci,但实际上我在实际设置中遇到过这种情况(显然更复杂),我想确保没有任何不好的事情发生。

以下是hg help log的一部分:

  Note:
   for performance reasons, log FILE may omit duplicate changes made on
   branches and will not show removals or mode changes. To see all such
   changes, use the --removed switch.

所以你应该能够以这种方式看到两个变更集。

我不确定哪些更改会显示,哪些不会。这可能取决于历史在您的存储库中的构建方式。由于未提及,您可能不能依赖它。