我想生成Mercurial中给定目录中两个修订版之间更改的文件列表。
特别是,我对 更改了什么不感兴趣,但在该目录中更改了哪些文件。
例如,假设在then
和otherthen
之间,只有2个文件发生了变化:
>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>
假设命令是什么?我已经尝试了差异和日志,但我看不出如何说服他们这样做:要么我得到补丁(差异),要么得到整个回购(日志)。
答案 0 :(得分:161)
hg status --rev x:y
其中x
和y
是所需的修订号(或标记或分支名称)。
如果您在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)”。