擅长:python、mysql、java
<p>正如我之前在回答中所说的,在玩Mercurial <a href="http://www.selenic.com/hg/help/revsets" rel="nofollow">revsets are your friend</a>时。也就是说,revset文档中并没有包含您想要的内容,而是在<a href="http://www.selenic.com/hg/help/log" rel="nofollow">log</a>命令的帮助中提到了这一点。在</p>
<p>在您的代码中,您似乎想要一个<code>diff</code>的“最新”两个标记之间发生了什么变化,下面的内容应该可以为您完成这项工作:</p>
<pre><code>hg diff -r "last(tagged(),2)"
</code></pre>
<p>我知道您使用的是Python,但是上面的命令将完成繁重的工作,并且您的Python代码可以专注于不那么低级的任务。最重要的部分是引号中的一点,我会解释的。在</p>
<p><code>tagged()</code>是所有已标记修订的列表-它应该引用与<code>hg tags</code>相同的修订,但是它只列出每个修订一次,而{<cd3>}将为单个修订显示多个标记(如果是这样的话)。在</p>
<p><code>last(set,[n])</code>过滤集合(在本例中是标记集)以显示最后的<code>n</code>项(如果省略,<code>n</code>为1)。在</p>
<p>其结果是一个revset,其中包含最后两个标记的更改,在上面的示例中,我们将其传递到<code>hg diff</code>。在</p>
<hr/>
<p><strong>更新:</strong>好的,我被Python中的<code>diff</code>抛出了。再次阅读时,看起来您基本上想要最后两个标记之间的<code>log</code>输出?使用revset这会变得更加复杂,但是使用上面的知识,您可以创建一个revset,如下所示:</p>
^{pr2}$
<p>我们有效地挑选了最后两个标签和最后一个标签(!!)并在它们之间执行包含所有集合的日志。<code>log</code>输出可以用<code> template</code>调整,正如lazybacker在他的回答中所显示的那样。{{a3}你可以去寻找更简单的信息。在</p>