2012-03-26 114 views
13

如何獲取兩個任意更改集之間修改的文件列表?Mercurial:列出「hg diff」文件

我唯一的猜測是可怕的事情是這樣的:

# files where something has been added 
hg diff -r AA -r BB|grep -- +++|cut -f1|cut -d/ -f2- >/tmp/ka 

# files where something has been removed 
hg diff -r AA -r BB|grep -- ---|cut -f1|cut -d/ -f2- >>/tmp/ka 

# filtering out "dev/null": it appears when a file is added or removed from the repository 
sort -u /tmp/ka |grep -v dev/null 

也許有一個善變的命令,我沒有注意到?


不是單個變更集的修改後的文件。
編輯:我需要這樣做,因爲我從青銅時代有些程序員誰不明白一個.diff作什麼工作的,請多多包涵......

+0

請填寫在意大利。因爲「從兩個任意變更集中修改」是不可預測的噪音和曲解。兩者之間還是隻有這兩個? – 2012-03-26 15:22:40

+1

很確定他試圖檢查在回購集變更集中發生的情況,類似於檢查單個文件變更的差異歷史記錄。 – 2012-03-26 15:34:53

+0

在變更集AA和變更集BB之間修改的文件。比如「hg diff -r AA -r BB」,但只是文件名,而不是完整的diff,即我在該命令行中提出的建議。 – 2012-03-26 15:36:30

回答

30

hg diff -r 182 -r 193 --stat

hg status --rev 182:193

+0

哦,謝謝,就是這樣! – 2012-03-26 15:56:55

+0

'--rev'和'-r'在我的系統上表現得一樣......是2012年的一個bug嗎? – mpen 2015-07-13 19:14:17

+0

好像現在已經修好了,是的。 – 2015-07-14 11:03:34

0

解決方案之一。基於差異的

>hg diff -r 3 -r 4 --stat 
comments.php | 14 +++----------- 
functions.php | 15 +++++++++++++-- 
header.php | 2 +- 
readme.txt | 17 ++++++++++++++--- 
sidebar.php | 43 ++++--------------------------------------- 
style.css  | 18 ++++++++++++------ 
6 files changed, 47 insertions(+), 62 deletions(-) 

您可以通過對「|」焦炭,或管道輸出到呆子,這對於記錄恰好有4個領域,打印$ 1

解決方案二(從我的POV更好,更好的方法)。登錄+模板+ revsets

>hg log -r "3::4" --template "{file_mods}\n" 
footer.php functions.php header.php search.php style.css 
comments.php functions.php header.php readme.txt sidebar.php style.css 

轉換列出,刪除(可能)重複我將離開你

8

的基本命令查找,當你想知道的東西有關文件狀態hg status。狀態命令是文件名稱面向命令,並且您想知道一些文件名。

當你運行它作爲

$ hg status 

然後將其與工作拷貝父版本(.)的工作拷貝狀態進行比較。但是,如果你運行它

$ hg status --rev AA:BB 

然後它會顯示AABB之間修改的文件!不需要格式化,切割,排序或模板。

(我以前herehere,並here解釋這一點,請參見更多的技巧這些問題和答案。)

+0

無法與-r一起工作,因爲「-r --removed只顯示已刪除的文件」 - 這是一個嚴重的UI失敗。 – 2012-03-28 00:03:56

+0

@asaddude:ups!對不起,我已經修復它使用'--rev'代替。 – 2012-03-28 08:30:27

相關問題