2010-09-02 13 views
9

Ich mag für hg log angepasste Vorlage verwenden, die wie folgt aussehen:Kann ich Mercurial-Befehlsvorlagen benutzerdefinierte Farben hinzufügen?

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

Dieses in Standard-Terminal-Farbe ist nicht sehr gut lesbar, so zum Beispiel würde Ich mag Knoten rot und grün ab machen. Wie kann ich das machen? In git kann ich diese Art von Formatierung wie folgt definieren:

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

Ist eine ähnliche Sache in Mercurial?

Antwort

11

AFAIK, es gibt keine Möglichkeit, dies direkt in Mercurial zu tun, aber wenn Sie auf einem Unix-y-System sind, können Sie ANSI escape codes verwenden, um die Farben zu steuern. Zum Beispiel:

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

finden Sie die node in rot geben und die desc in grün.

in der Windows-Eingabeaufforderung haben Sie die ColorExtension und die Codes sind die Parameter an den Farbbefehl (help color in der Eingabeaufforderung) zu ermöglichen, so wäre das Äquivalent sein:

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

Hinweis: in der zweiten Escape-Sequenz, die 0 ist, um die Textfarbe zurückzusetzen und die 2 ist es, um grün zu setzen. Ohne die 0, es scheint, Sie erhalten eine inklusive-oder der Farbcodes, die in diesem Fall wäre gelb.

+0

Sie können den gleichen Mechanismus unter Windows mit [Ansicon] (https://github.com/adoxa/ansicon) verwenden. – Tomalak

24

Ab 2013 hat Mercurial direkte Unterstützung für colors on templates. Sie können das auch unter hg help templates überprüfen.

Sie müssen die Farberweiterung aktivieren auf Ihrem .hgrc:

[extensions] 
color = 

Dann einige benutzerdefinierte Etiketten in den später auf der Vorlage verwendet werden:

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

dann die Vorlage Referenzierung verwenden die Labels (unter Verwendung von {label ('labelname', field)}} anstelle von {field}:

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

Das obige Beispiel hebt den Knoten (Revision) in Gelb und den Autor des Commits in Fettblau hervor.

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

Update:: Getestete Version 2.5.4 Wie immer können Sie einen Alias ​​auf Ihrem .hgrc erstellen. Gemäß der changelog ist dies works since version 2.5.

+0

Gibt es eine Möglichkeit, eine andere Farbe für {diffstats} zu haben? d.h.: grün für + rot für -? –

+3

Um die eingebauten Etiketten zu sehen, die Mercurial selbst benutzt, führen Sie den Befehl mit '--color = debug'; z.B. 'hg log -l1 --color = debug '. –

Verwandte Themen