4

我想获得 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

4

3 回答 3

2

你可以changelog试试这种风格。当然,它看起来并不完全相同,但它确实列出了提交所触及的文件,我认为这就是您要查找的文件。例子:

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

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

于 2012-08-01T10:31:55.020 回答
1

您可以使用hg log它并使用模板自定义输出

例子:

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

这看起来类似于您的 Git 示例。
不过,文件列表看起来不一样(没有换行符)。

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

于 2012-08-01T09:30:30.440 回答
1

如果您正在寻找一种获取哪些文件已更改的方法,但您不太担心格式类似于 git,那么我非常喜欢任何通常打印差异的命令上的 diffstat 开关。

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

这不是完全相同的信息。它不是每个变更集,也没有说明文件是否被添加/修改/删除,但另一方面它给出了更改范围的一些概念。

于 2012-08-01T16:26:59.200 回答