Mercurial 如何比较PyCharm中的两个版本,而不包括中间版本

Mercurial 如何比较PyCharm中的两个版本,而不包括中间版本,mercurial,pycharm,Mercurial,Pycharm,在我的一生中,我似乎找不到这样一个快速的问题:我如何比较PyCharm中的两个修订版,而不让两个修订版之间的修订版包含在比较中 我将书签用于特性(因为分支用于更长期的用途,如测试、开发等)。我编写了几个功能(在单独的书签中)并推送它们。过了一段时间,我会去上游做代码审查。但是,来自多个书签的多个提交是组合在一起的,当我尝试进行比较时,我会从不同的书签获得代码,从而影响比较 例如: | o r10 - baseline o \ r11 - feature B work

在我的一生中,我似乎找不到这样一个快速的问题:我如何比较PyCharm中的两个修订版,而不让两个修订版之间的修订版包含在比较中

我将书签用于特性(因为分支用于更长期的用途,如测试、开发等)。我编写了几个功能(在单独的书签中)并推送它们。过了一段时间,我会去上游做代码审查。但是,来自多个书签的多个提交是组合在一起的,当我尝试进行比较时,我会从不同的书签获得代码,从而影响比较

例如:

|
o         r10 - baseline
o \       r11 - feature B work
| o \     r12 - feature A work
| | o \   r13 - feature C work
| o | |   r14 - feature A work (complete)
我想在第14版和第10版之间做一个比较,以便对特性a进行代码审查,但当我进行比较时,第11版、第12版和第13版的代码都包含在比较中


这是令人恼火的,因为当我确定代码是好的并将书签合并到基线中时,在提交时,我会得到一个更改列表,显示基线和功能a之间的更改,而没有中间的修订。我可以简单地使用它,但我宁愿不要,因为意外的“回车”键可以提交代码,我不能使用其他PyCharm工具,因为我“卡在”提交审阅窗口和其他原因。

为修订添加书签不会自动创建新的标题-它只是将名称附加到给定的修订

但是,如果您为每个功能创建了一个新的匿名头部,并将其标记为书签,从而创建了一个不同的历史记录,将您的基本版本r10作为共同祖先,并基于此创建了所有功能,如图所示,,您应该可以使用
hg diff-r10:14
获得您希望得到的输出:修订版12和14所做的更改


如果不是这样,那么要么你创建了某种形式的更线性的历史(因此你的图形看起来不同;也许你在开始处理功能B和C之前没有签出基本版本r10),要么PyCharm做了一些不同的事情。当要求差异时,请确保同时给出开始和结束版本,否则mercurial将用当前签出的版本替换后者。

您没有显示您的更改图形的实际外观,但根据您的问题,我假设这些更改集是线性历史。那你就误用了mercurial。对于您处理的每个单独的功能,您应该使用一个单独的头部,因此是一个不同的历史,并尝试测试,而不是将所有内容都放在一个线性历史中。并且只有在获得批准后才将一个功能合并到您的主线接受标题中。每个功能都是一个单独的书签,因此,从基线转移(据我所知,这是mercurial在有2个或更多书签且您已向其提交工作时所做的,自动创建一个新标题)。问题是,当我推送代码进行审阅时,历史将修订号交织在一起,因此即使每个特性都不同,它们的修订号也会混合在一起,就像上面的示例一样。这就是为什么当我把书签合并回来时,我会得到想要的功能;我只想将此功能与提交窗口分开。在您编辑的示例中,使用图:
hg diff-r10:14
将给出由r10和r14之间的线性历史组成的差异,从而得到变更集12和14)。所以要么pycharm做了一些奇怪的事情,要么你的图表看起来不一样。但一定要同时给出起始版本和结束版本,否则你当前签出的版本将被视为一个版本。我深入查看了一下,结果发现我不知怎么搞砸了,有一堆书签使用了相同的标题,而其他书签使用了不同的标题,所以看起来好像是用户错误@如果你想根据你的承诺做出回答,我会接受的。