Bei der Arbeit sind wir mehrere Entwickler und haben keinen Code-Style-Guide. Einige Entwickler rücken mit Tabulatoren ein, andere mit 4 Leerzeichen (zum Glück verwendet niemand, der Einrückungen mit Leerzeichen verwendet, andere als 4 Leerzeichen). Im Allgemeinen ist dies kein (großes) Problem, da wir in unseren Editoren festlegen tabwidth=4
und alle Einrückungen korrekt erscheinen.
Aber in git diff
oder so git show
erscheint es:
diff --git a/mesclatabs.php b/mesclatabs.php
new file mode 100644
index 0000000..1986c91
--- /dev/null
+++ b/mesclatabs.php
@@ -0,0 +1,5 @@
+<?php
+function foo() {
+ echo "line with 1 tab\n";
+ echo "line with 4 spaces\n";
+}
Das Problem ist git diff
oder git show
wo jede Registerkarte so breit wie 8 Leerzeichen erscheint (nun, in Wirklichkeit erscheint sie als Registerkarte, und die Shell (in meinem Fall Bash) zeigt die Registerkarte als 8 Leerzeichen an. Ich nehme an, es muss eine Bash-Konfiguration geben, um sie zu ändern Dies, aber ich würde gerne wissen, ob Git eine Option hat, Tabulatoren als 4 Leerzeichen in diff
/ auszugeben show
, da einige Entwickler mit zsh
statt arbeiten bash
.
Irgendwelche Ideen?
Antworten:
Ich glaube
git config --global core.pager 'less -x1,5'
Verweise:
quelle
-x5
da die +/- Symbole des Standard - Diff nicht die Position des tab-stop auswirken, aber sie tun alle Räume ein Zeichen nach rechts schieben. Ein Tabulator von 5 richtet alles richtig aus.git --color=always | less -r
?less -x1,5
ist ungültigless
ich als aliasless -R
, core.pager wie oben definiert, und ich laufegit diff --color-words
- alles funktioniert gut und die Tabulatorbreite ist korrekt. Vielleicht hilft das?git add -p
der Pager nicht verwendet und die Registerkarte wird falsch angezeigt. Wenn Sie beschreiben, wie Sie dies ebenfalls beheben können. dann ist die Antwort voll-x1,5
der 1 für die führende Spalte in der Diff-Ausgabe (die +, - und ein Leerzeichen enthält). Nachfolgende Registerkarten springen dann zu den Spalten 5, 9, 13, 17 usw. - auch bekannt als 1 + Vielfache von 4. Für git diff ist also definitiv das richtige Argument-x1,5
. Die Leute, die oben behaupten, dass-x5
das für sie funktioniert ... nun - das ist eine Tabulatorbreite von 5 Leerzeichen ohne führende Spalte, hmm. Unwahrscheinlich?Da die Antwort https://stackoverflow.com/a/10584237/1850340 aufgrund meiner Farbeinstellungen bei mir nicht funktionierte, habe ich folgende Lösung gefunden:
TAB=$'\t' && git config --global core.pager "sed 's/$TAB/ /g' | less" && unset TAB
Dadurch werden alle Tabulatorzeichen durch 4 Leerzeichen ersetzt, bevor sie mit weniger angezeigt werden. (Die TAB-Problemumgehung wird benötigt, um das Backslash-Entweichen der Shells zu umgehen.)
quelle
less -R
ins Spiel kommen? um die ANSI-Farb-Escape-Sequenzen durchzulassen, im Gegensatz zuless -r
?