如何使'hg log --verbose'在多行显示文件?

Roo*_*ook 14 mercurial windows-xp

默认情况下,更改集中更改的所有文件都在同一行,这使得它们很容易跳过一个或两个,并且难以阅读.

如何让每个文件显示在自己独立的行上?

Mar*_*ler 13

查看有关已更改文件的信息的真正方法是使用hg status.这显示了在修订版100中修改的文件:

$ hg status -c 100
Run Code Online (Sandbox Code Playgroud)

但是如果你想拥有日志消息,那么hg log当然是一个自然的起点.不幸的是,没有内置开关可以使每行显示一个文件.

但是,输出hg log模板系统控制,您可以为它编写自己的样式.默认样式在此处,您可以自定义以通过更改来执行您想要的操作

file = ' {file}'
Run Code Online (Sandbox Code Playgroud)

file = '{file}\n'
Run Code Online (Sandbox Code Playgroud)

然后将新样式保存为my-default.style并添加

[ui]
style = ~/path/to/my-default.style
Run Code Online (Sandbox Code Playgroud)

到您的配置文件.这为每行提供了一个文件,它甚至可以在文件名中有空格时使用.

我知道一个问题:hg log输出中的颜色会丢失.事实证明,Mercurial在这里作弊!它实际上并不使用我在生成日志输出时显示的默认模板.它根本不使用任何模板系统,它只是使用直接代码生成输出,因为这更快.问题是颜色扩展仅适用于硬编码模板.当您切换到自定义模板从而调用模板引擎时,您将丢失颜色输出.

但是,您可以通过将ANSI转义码直接插入模板(在类Unix系统上)来恢复颜色.更改

changeset = 'changeset:   {rev}:{node|short}\n{branches}...
Run Code Online (Sandbox Code Playgroud)

changeset = '\033[33mchangeset:   {rev}:{node|short}\033[0m\n{branches}...
Run Code Online (Sandbox Code Playgroud)

这个技巧和硬编码变换集的黄色标题行.同时调整changeset_verbosechangeset_quiet线条,您将使用自己的模板进行彩色输出.


EmF*_*mFi 5

汞模板帮助文件中有这样的宝石在它的例子.

格式列表,例如文件:

$ hg log -r 0 --template "files:\n{files % ' {file}\n'}"

这适用于Windows,无需任何翻译.