2012-08-01 76 views
4

我想Git的命令類似的輸出:git的Mercurial相當於什麼?

$ git whatchanged <old_rev>..<new_rev> --pretty=oneline --name-status 

我讀到hg outgoing可以幫助,但它並沒有在它的幫助頁有關修訂東西:

$ hg diff <old_rev>..<new_rev>給了差異,但輸出是:

diff -r d3ed0d3eb928 -r 63329069147f hello.rb 
--- a/hello.rb Tue Jul 31 16:52:40 2012 +0530 
+++ b/hello.rb Wed Aug 01 11:15:33 2012 +0530 
@@ -1,1 +1,1 @@ 
-print "Hello" 
+print "Hello World" 

,而我需要類似的東西:

bb3b9a6bc00b7203ab6491dbd062641fa60efb95 Fix for #4 and other small errors 
M  .gitignore 
A  config.ru 
D  db/database.db 
M  views/setup.haml 
1c4ff29e5c7fc707c6fe314c060cd1935b300dd9 Added keyboard shortcuts and reload 
M  README.md 
A  public/javascript/keys.js 
d0755d0b54cb4129fbf7730fe0bdf21a3996e224 Basic player completed 
M  README.md 
D  public/javascript/jquery-ui-1.8.21.custom.min.js 
... 

這我得到git whatchanged 1c4ff29e5c7fc707c6fe314c060cd1935b300dd9 bb3b9a6bc00b7203ab6491dbd062641fa60efb95 --pretty=oneline --name-status

回答

1

您可以使用hg log這個和​​。

例子:

hg log -r <old_rev>:<new_rev> --template "{node} {desc}\n{files}\n\n" 

這看起來類似你的Git的例子。
儘管(不換行),文件列表看起來不一樣。

我從來沒有嘗試過它,但也可以使用樣式(類似於模板,但將樣式保存在文件中,並按名稱引用它)自定義輸出。
此文檔與我在上面發佈的同一鏈接處於頁面底部。
顯然,也可以在文件之間放置換行符(這是頁面上的一個示例)。

2

您可以嘗試一下changelog風格。當然,它看起來不完全一樣,但它確實列出了提交所觸及的文件,我認爲這是您正在尋找的內容。例子:

hg log --style changelog 
hg outgoing --style changelog 

正如克里斯蒂安說,你可以使用模板自定義精確的輸出到無窮遠。欲瞭解更多信息,請參閱hg help templating

+0

p.s.我只是想出了這個醜陋的混蛋:'hg log -l 10 --template「{node} \ n」| xargs -I {} echo'hg log -r {} --template「{node} {desc | firstline} \ n」; hg status --change {}'| bash' – 2012-08-01 10:58:30

1

如果你正在尋找讓哪些文件已經改變的一種方式,但你不要太擔心格式是一樣的git,那麼我很喜歡在任何正常打印的diff命令的diffstat開關。

# hg in --stat 
# hg out --stat 
# hg diff -r <old_rev>:<new_rev> --stat 
... and a load more 

這不完全相同的信息。它不是每個變更集,也不是說如果一個文件被添加/修改/刪除,但另一方面它提供了一些變化的概念。