2010-01-07 47 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

相關問題