如何为mercurial模板命令添加不同的颜色?

时间:2015-10-07 20:28:10

标签: mercurial formatting hgrc

我想要的是什么:

一个命令,用于打印更改日志中已添加(+)和删除( - )的数量,其中添加的部分(+)以绿色写入,删除部分( - )以红色写入。

我目前拥有的内容:

Output for int array : 1 1 1 1 1 5 Output for double array : 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.000000 打印出我想要的内容(hg log -T {diffstat})但黑色。

+20/-31:以绿色打印整个diffstat(hg log -T "{label('custom.colorcode', diffstat)} \n")(我的custom.colorcode在.hgrc中设置为绿色)

参考文献:

https://www.mercurial-scm.org/repo/hg/help/templates

Can I add custom colors to mercurial command templates?

1 个答案:

答案 0 :(得分:1)

我不相信Mercurial有一种方法可以自动解析diffstat输出并为其中的某些部分指定颜色,但是您可以通过自己进行解析来使用解决方法。例如。使用以下模板:

hg log -T '{sub("(.*): (.*)/(.*)", "\\1: \033[0;32m\\2\033[0m/\033[0;31m\\3\033[0m", diffstat)}\n'

请注意,此硬编码ANSI颜色转义(绿色为32,红色为31)。如果你想用标签做,这也是可能的,但速度要慢得多(因为diffstat必须多次计算)。这种方法对其他关键字仍然有用,所以无论如何我都要解释它。这是一个示例模板:

{sub(":.*","",diffstat)}: \
{label("diff.inserted", sub(".*([+][0-9]+).*", "\\1", diffstat))}/\
{label("diff.deleted", sub(".*(-[0-9]+).*", "\\1", diffstat))}

使用这么长的模板的最简单方法是将其放在一个文件中(例如~/.hgtemplates/diffstat),然后使用hg log -T ~/.hgtemplates/diffstat。如果模板包含斜杠或反斜杠并且对应于现有文件,则Mercurial将查看该文件的内容。长模板也可以放在.hgrc的模板部分,例如:

[templates]
diffstat = "{sub(":.*","",diffstat)}: \
  {label("diff.inserted", sub(".*([+][0-9]+).*", "\\1", diffstat))}/\
  {label("diff.deleted", sub(".*(-[0-9]+).*", "\\1", diffstat))}\n"

然后可以使用相应的名称(例如hg log -T diffstat)。