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


118

我想生成一个列表,其中列出了Mercurial中给定目录中的两个修订之间的哪些文件。

特别是,我没有兴趣在什么改变,但哪些文件在该目录中改变。

例如,假设之间thenotherthen中,只有2个文件改变:

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

假设的命令是什么?我已经尝试了diff和log,但是我看不出如何说服他们这样做:要么我得到了patch(diff),要么我得到了整个repo(log)。

Answers:


166
hg status --rev x:y

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

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


3
要仅查看当前目录中的更改:hg status --rev x:y .
用户

14
要查看最新版本中的更改,请执行以下操作: hg status --rev .^
kunigami 2014年

8
要仅获取文件名列表(并且没有前缀字符指示更改的类型),请附加-n,即hg status --rev x:y -n
Cheetah

1
hg status --change .列出更改过的文件.-与列表相同,hg status --rev .^但更直接
-Metaxis

14

状态就是您所需要的。

但是,根据“两个修订版本之间”的含义,您可能还考虑使用“ 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获得的。


>汞帮助重置:

“ x :: y” DAG范围,表示所有x的后代和y的祖先的变更集,包括x和y本身。如果忽略了第一个端点,则等效于“ ancestors(y)”;如果忽略了第二个端点,则等效于“ descendants(x)”。


1
也许您需要显式地包含命令,以便您的答案不依赖于其他命令,并且更加简单。诸如“是的,状态就是您所需要的。例如hg status --rev x::y”。
PhoneixS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.