2015-10-07 5 views
1

Что я хочу:Как добавить разные цвета в команду меруриального шаблона?

команда, которая печатает количество добавленной стоимости (+) и удалить (-) из журнала изменений, где добавленная часть (+), написанной в зеленый и удаленной части (-), написанный в красном ,


То, что я в настоящее время:

hg log -T {diffstat} печатает то, что я хочу (+20/-31:), но в черном цвете.

hg log -T "{label('custom.colorcode', diffstat)} \n" печатает всю статистику различий (+20/-31:) в зеленый цвет (мой custom.colorcode установлен в зеленый .hgrc)


Ссылки:

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

Can I add custom colors to mercurial command templates?

ответ

1

Я не верю, что Mercurial может автоматически разобрать diffstat outpu t и назначить цвета для его частей, но вы можете использовать обходной путь, выполняя разбор. Например. со следующим шаблоном:

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).