2010-01-07 39 views
112

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

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

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

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

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

+6

出色地表达了问题,做得好! :) – 2011-07-25 11:20:04

回答

155
hg status --rev x:y 

其中xy期望版本号(或标签或分支名称)。

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

+3

只能看到当前目录中的更改:'hg status --rev x:y。' – User 2013-12-03 05:04:34

+11

要查看最新版本中的更改: 'hg status --rev。^' – kunigami 2014-04-04 21:44:51

+5

要获取文件名列表(并且没有指示更改类型的前缀字符),请追加'-n',即'hg状态--rev x:y -n' – Cheetah 2015-08-11 20:57:53

11

状态是你需要的。取决于“两个版本之间”的意思,你也可以考虑使用“DAG指导的非循环图”(DAG-Directed Acyclic Graph)范围的“x :: y”。之间且包括端点,根据当地,数值修订版

鉴于平行的变更,

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

hg status --rev 1:4将返回(1,2,3,4),即 任何东西。这可能(并且很可能会)在其他 - 虽然是相关的 - 存储库中返回不同的结果!

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

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


>汞柱帮助revsets:

“X :: Y” DAG的范围内,也就是说是x的子孙和y的 的祖先,包括X和Y自己所有的变更。如果省略第一个端点 ,这相当于“祖先(y)”,如果第二个端点保留为 ,则它相当于“后代(x)”。

+1

也许您需要明确包含该命令让您的答案不依赖于其他更加傻瓜式的答案。像“是的,状态是你需要的,例如'hg status --rev x :: y'”。 – PhoneixS 2016-03-29 09:16:51

相关问题