10 Stimmen

Kann ich benutzerdefinierte Farben zu Mercurial-Befehlsvorlagen hinzufügen?

Ich möchte eine benutzerdefinierte Vorlage für hg log verwenden, die so aussieht:

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

In der Standard-Terminalfarbe ist dies nicht sehr gut lesbar, daher möchte ich node zum Beispiel rot und desc grün machen. Wie kann ich das tun? In Git kann ich eine solche Formatierung wie folgt definieren:

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

Ist so etwas in Mercurial möglich?

29voto

Rudy Matela Punkte 6149

Bis 2013 unterstützt Mercurial Farben in Templates. Du kannst dies auch unter hg help templates überprüfen.

Du musst die Farberweiterung in deiner .hgrc aktivieren:

[extensions]
color =

Füge dann einige benutzerdefinierte Label hinzu, die später im Template verwendet werden:

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

Verwende dann das Template, indem du auf die Labels referenzierst (mit {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. Wie immer kannst du ein Alias in deiner .hgrc erstellen:

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

Aktualisierung: Getestete Version 2.5.4. Laut dem Changelog funktioniert dies seit Version 2.5.

11voto

Niall C. Punkte 10798

Nach meinem Kenntnisstand gibt es keinen direkten Weg, dies direkt in Mercurial zu tun, aber wenn Sie auf einem Unix-System sind, könnten 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"

wird Ihnen den node in Rot und den desc in Grün anzeigen.

In der Windows-Eingabeaufforderung müssen Sie die ColorExtension aktivieren und die Codes sind die Parameter für den Befehl Farbe (help color in der Eingabeaufforderung), also wäre das Äquivalent:

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

Hinweis: in der zweiten Escape-Sequenz ist die 0 zum Zurücksetzen der Textfarbe und die 2 um sie auf Grün zu setzen. Ohne die 0 scheint es, dass Sie eine inklusive ODER-Verknüpfung der Farbcodes erhalten, was in diesem Fall Gelb wäre.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X