生成在hg版本之间更改的文件的列表

时间:2010-01-07 23:35:41

标签: version-control mercurial

我想生成Mercurial中给定目录中两个修订版之间更改的文件列表。

特别是,我对 更改了什么不感兴趣,但在该目录中更改了哪些文件

例如,假设在thenotherthen之间,只有2个文件发生了变化:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

假设命令是什么?我已经尝试了差异和日志,但我看不出如何说服他们这样做:要么我得到补丁(差异),要么得到整个回购(日志)。

2 个答案:

答案 0 :(得分:161)

hg status --rev x:y

其中xy是所需的修订号(或标记或分支名称)。

如果您在Windows中使用终端,请添加hg status --rev x:y > your-file.txt 以将列表保存到文件中。

答案 1 :(得分:13)

状态是您所需要的。

但是,根据“两次修订之间”的含义,您也可以考虑使用“ x :: y ”(DAG - 定向非循环图)范围。

给定并行变更集,

1--2---4 \---3

hg status --rev 1:4会返回(1,2,3,4), 即根据本地的数字 rev ,在端点之间和包括端点之间的任何东西。这可能(并且很可能会)在其他 - 尽管是相关的 - 存储库中返回不同的结果!

hg status --rev 1::4将返回(1,2,4), 即端点,以及'1'的后代和'4'的祖先的所有变更集。

后一种情况x :: y通常在实际应用中更有用。这是你通过TortoiseHg \ Visual Diff获得的。

> hg help revsets:

  

“X :: Y”     DAG范围,表示作为x和x的后代的所有变更集     y的祖先,包括x和y本身。如果第一个端点是     如果剩下第二个,这就相当于“祖先(y)”     它相当于“后代(x)”。