2014-07-07 10 views
7

Ich weiß, dass es möglich ist, git Nachrichten begehen mit so etwas wie dies in Pretty-Print trunkieren:Kürzen Commit-Nachrichten

git log --oneline --format="%h %<(70,trunc)%s %cn" 

Aber das scheint zu Pad die Nachrichten verpflichten, die kürzer als 70 Zeichen mit Leerraum (so wird %cn immer nach rechts geschoben).

Gibt es eine Möglichkeit zu stoppen, die Commit-Nachricht mit Leerzeichen aufgefüllt wird, wenn es kürzer als 70 Zeichen ist?

+0

Hallo dort. was versuchst du zu erreichen? Sie möchten die Option zum Schreiben von Commit-Nachrichten länger als 70 Zeichen blockieren oder nur die ersten 70 Zeichen anzeigen? – CodeWizard

+0

nur die ersten 70 Zeichen anzeigen – zoran119

Antwort

4

Gemäß der git-log manual, ltrunc, mtrunc und trunc ist nur ein optionales Argument der %<(<N>) Platzhalter, der Hauptzweck die Polsterung zu tun ist:

%<(<N>[,trunc|ltrunc|mtrunc]): der nächste Platzhalter machen mindestens N ergreifen Spalten, ggf. Füllfelder rechts. Optional truncate am Anfang (ltrunc), der Mitte (mtrunc) oder dem Ende (trunc), wenn die Ausgabe länger als N Spalten ist. Beachten Sie, dass das Abschneiden nur mit N> = 2 korrekt funktioniert.

Ab sofort die git log hübsche Formate scheinen keine Option zu haben, die nur die Kürzung tut. Ich denke, dass diese Art und Weise mit "hübschem Drucken" einhergeht, das allgemein verwendet wird, um die Ausgabe tabellarisch darzustellen, um leicht lesbar zu sein.

Sie können zusätzliche Leerzeichen aus git log hübschen Druckausgabe mit etwas Post-Processing, z. Verwenden Sie sed, um zwei oder mehr benachbarte Leerzeichen durch eins zu ersetzen:

git log --oneline --format="%h %<(70,trunc)%s %cn" | sed -e "s/[ ]\{2,\}/ /g" 
+0

Sed wird in diesem Fall nicht funktionieren, da die Leerzeichen nach der Commit-Nachricht hinzugefügt werden, wenn seine weniger als 70 und dann der Name des Autors, so wird es eine Nachricht mit Leerzeichen und dann der Name des Autors sein so sed wird nicht die Leerzeichen in der Mitte entfernen – CodeWizard

+0

@jsexpert Dieser genaue Befehl tut es für mich wie auf OS X und Cygwin beschrieben. Muss für verschiedene 'sed' Aromen angepasst werden. – famousgarkin

+0

tr -s '' ist der übliche Unix- "Squash-Whitespace-Befehl" – TamaMcGlinn