2010-09-02 13 views
9

Quiero usar la plantilla personalizada para hg log que se parece a esto:¿Puedo agregar colores personalizados a plantillas de comandos mercurial?

hg log --template '{node|short} {desc} [{date|age} by {author}]\'n --color=always 

Este defecto en el color terminal no es muy legible, por lo que, por ejemplo, me gustaría hacer nodo rojo y verde desc. ¿Cómo puedo hacer esto? En git puedo definir este tipo de formateo así:

git log --pretty=format:'%Cred%h%Creset %Cgreen%s%Creset [%ar by %an]' 

¿Es posible algo similar en mercurial?

Respuesta

11

AFAIK, no hay forma de hacerlo directamente en Mercurial, pero si usa un sistema Unix-y puede usar ANSI escape codes para controlar los colores. Por ejemplo:

hg log --template "\x1B[31m{node|short} \x1B[32m{desc}\x1B[0m\n" 

le dará los node en rojo y en verde la desc.

En el símbolo del sistema de Windows, tiene que habilitar el ColorExtension y los códigos son los parámetros en el comando de color (help color en el símbolo del sistema), por lo que el equivalente sería:

hg log --template "\x1B[4m{node|short} \x1B[0;2m{desc}" 

Nota: en la segunda secuencia de escape, el 0 restablece el color del texto y el 2 se establece en verde. Sin el 0, parece que obtienes un código inclusivo o de color, que en este caso sería amarillo.

+0

Puede usar el mismo mecanismo en Windows con [Ansicon] (https://github.com/adoxa/ansicon). – Tomalak

24

A partir de 2013, Mercurial tiene soporte directo para colors on templates. También puede verificarlo en hg plantillas de ayuda.

Debe activar la extensión de color en su .hgrc:

[extensions] 
color = 

A continuación, añadir algunas etiquetas personalizadas para ser utilizado más adelante en la plantilla:

[color] 
custom.rev = yellow 
custom.author = bold 

A continuación, utilice la plantilla de referencia las etiquetas (usando {label ('nombre de etiqueta', campo)} en lugar de {campo}:

hg log --template "{label('custom.rev',node|short)} {desc} [{date|age} by {label('custom.author',author)}]\n" 

El ejemplo anterior resalta el nodo (revisión) en amarillo y el autor del compromiso en negrita azul. Como siempre, puede crear un alias en su .hgrc:

[alias] 
customlog = log --template "{label('custom.rev',node|short)} {desc} [{date|age} by {label('custom.author',author)}]\n" 

Actualización: versión probada 2.5.4. Según el changelog, este works since version 2.5.

+0

¿Hay alguna forma de tener un color diferente para {diffstats}? es decir: verde para + rojo para -? –

+3

Para ver las etiquetas incorporadas que utiliza Mercurial, ejecute el comando con '--color = debug'; p.ej. 'hg log -l1 --color = depuración'. –

Cuestiones relacionadas