Mercurial相当于git whatchanged?

时间:2012-08-01 08:38:38

标签: git mercurial diff

我想得到Git命令的类似输出:

$ 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

3 个答案:

答案 0 :(得分:2)

您可以尝试changelog样式。它当然看起来并不完全相同,但它确实列出了提交所触及的文件,我认为这是你正在寻找的。例子:

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

正如Christian所说,您可以使用模板自定义输出到无穷大。有关详细信息,请参阅hg help templating

答案 1 :(得分:1)

您可以使用hg logcustomize the output with a template

示例:

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

这将与您的Git示例相似 但是,文件列表看起来并不相同(没有换行符)。

我自己从未尝试过,但也可以使用样式自定义输出(类似于模板,但您将样式保存在文件中,只需通过名称引用它)。登记/> 此文档位于我在上面的页面底部发布的链接上 显然,也可以在文件之间放置换行符(页面上有一个例子)。

答案 2 :(得分:1)

如果你正在寻找一种方法来获取哪些文件已经改变,但你并不太担心格式化就像git,那么我非常喜欢在任何通常打印差异的命令上使用diffstat开关。 / p>

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

这不是完全相同的信息。它不是每个变更集,也不是说文件是否被添加/修改/删除,但另一方面它提供了一些变化程度的概念。