默认情况下,变更集中更改的所有文件都在同一行,这使得它们很容易跳过一两个,并且难以阅读。
如何让每个文件单独显示?
答案 0 :(得分:12)
查看有关已更改文件的信息的真实方法是使用hg status
。这显示了在修订版100中修改的文件:
$ hg status -c 100
但是如果你也希望得到日志消息,那么hg log
当然是一个自然的起点。不幸的是,没有内置开关会使每行显示一个文件。
但是,hg log
的输出由template system控制,您可以为它编写自己的样式。默认样式为here,您可以通过更改
file = ' {file}'
到
file = '{file}\n'
然后将新样式保存为my-default.style
并添加
[ui]
style = ~/path/to/my-default.style
到你的配置文件。这为每行提供了一个文件,它甚至可以在文件名中有空格时使用。
我发现了一个问题:你在hg log
输出中丢失了颜色。事实证明,Mercurial在这里作弊!它实际上并不使用我在生成日志输出时显示的默认模板。它根本不使用任何模板系统,它只是使用直接代码生成输出,因为这更快。问题是颜色扩展仅适用于硬编码模板。当您切换到自定义模板并从而调用模板引擎时,您将丢失颜色输出。
但是,您可以通过将ANSI escape codes直接插入模板(在类Unix系统上)来恢复颜色。改变
changeset = 'changeset: {rev}:{node|short}\n{branches}...
到
changeset = '\033[33mchangeset: {rev}:{node|short}\033[0m\n{branches}...
执行该操作并硬编码变更集的黄色标题行。同时调整changeset_verbose
和changeset_quiet
行,您将使用自己的模板进行彩色输出。
答案 1 :(得分:5)
hg template help文件的示例中包含此gem。
格式列表,例如文件:
$ hg log -r 0 --template "files:\n{files % ' {file}\n'}"
这适用于Windows而无需任何翻译。
答案 2 :(得分:2)
我认为没有内置的方法来实现这一点,但是一些sed(也可用于Windows:http://gnuwin32.sourceforge.net/packages/sed.htm)可以提供帮助:
hg log --template "Rev: {rev}:{node}\nDate: {date|isodate}\nFiles: {files}\n\n" -l 10 | sed -e '/^Files:/s/ /\n /g'
输出:
Rev: 1:2538bd4661c755ccab9b68e1d5e91144f6f97d33
Date: 2011-12-20 15:47 +0100
Files:
test1.txt
Rev: 2:853a6f3c505308c9babff5a5a2f1e09303f1689c
Date: 2011-12-20 15:44 +0100
Files:
test2.txt
test3.txt
sed -e '/^Files:/s/ /\n /g'
的解释:
/^Files:/
搜索以“文件:”开头的行,并应用以下搜索并仅替换为这些行s/ /\n /g
用换行符替换所有行,后跟空格。当文件名包含空格时,此解决方案无效。
答案 3 :(得分:0)
答案 4 :(得分:0)
要查看修订中更改的所有文件,请使用:
hg status --change REV