tabwidth in git show / git diff auf 4 setzen

Lesezeit: 4 Minuten

tabwidth in git show git diff auf 4 setzen
Carlos Campderros

Bei der Arbeit sind wir mehrere Entwickler und haben keinen Code-Styleguide, und einige Entwickler rücken mit Tabulatoren ein und einige andere mit 4 Leerzeichen (zum Glück verwendet keiner der Einrückungen mit Leerzeichen anders als 4 Leerzeichen). Im Allgemeinen ist dies kein (großes) Problem, da wir in unseren Editoren festlegen tabwidth=4 und alle Einrückungen scheinen korrekt zu sein.

Aber in git diff oder git show das erscheint:

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 jeder Tab so breit wie 8 Leerzeichen erscheint (nun, in Wirklichkeit erscheint er als Tab, und die Shell (Bash in meinem Fall) zeigt den Tab als 8 Leerzeichen an. Ich nehme an, es muss eine Bash-Konfiguration geben, um dies zu ändern, aber ich würde gerne wissen, ob git eine Option hat, um Tabulatoren als 4 Leerzeichen auszugeben diff / showwie einige Entwickler damit arbeiten zsh anstatt bash.

Irgendwelche Ideen?

  • In einer idealen Welt würden die Entwickler alle Leerzeichen verwenden und Sie werden keine dummen Probleme wie diese haben.

    – Sashang

    14. Mai 2012 um 10:38 Uhr

  • Ich bin völlig anderer Meinung. Warum würden Sie etwas mit 4 Zeichen darstellen, wenn Sie es mit 8 darstellen können?

    – Matthäus G

    24. Mai 2013 um 14:59 Uhr

  • Natürlich kenne ich Ihre Situation nicht, aber ich würde wirklich auf einige super-grundlegende Codierungsrichtlinien drängen, vielleicht nur über die Tabulatoren/Leerzeichen. Keine Tabulatoren klingt nach einer guten Idee, denn dann neigen die Leute dazu, Tabulatoren zu verwenden, um ihre Kommentare und dergleichen auszurichten, und es wird zu einem Durcheinander … Und das Einfügen von Tabulatoren nach Leerzeichen … Es ist verwirrend, wenn ich zum Bearbeiten gehe und ich kann Ich sehe nicht, was ein Tab und was ein Leerzeichen ist (also mache ich Tabs immer in meinem Editor sichtbar). Ich bin da allerdings etwas neurotisch, also

    – Neal Gökli

    13. September 2018 um 18:42 Uhr

  • Außerdem denke ich, dass es möglich ist, (nur) Tabulatoren konsequent zum Einrücken von Code und Leerzeichen für jede andere Ausrichtung zu verwenden, und dann können die Leute den Tabulator ändern, was sie wollen. Ich kann mir aber nicht vorstellen, dass die Leute konsequent genug sind!

    – Neal Gökli

    13. September 2018 um 18:43 Uhr

  • @MatthewG 8 klingt viel großartiger als meine 2 … Danke, dass du mir das Licht gezeigt hast! 😀

    – Neal Gökli

    13. September 2018 um 18:44 Uhr

1645705086 810 tabwidth in git show git diff auf 4 setzen
CodeMonkee

Ich glaube git config --global core.pager 'less -x1,5'

Verweise:

  • Das Argument sollte weniger sein -x5 weil die +/- Symbole des einheitlichen Diffs keinen Einfluss auf die Position des Tabstopps haben, aber sie tun Schieben Sie alle Leerzeichen um ein Zeichen nach rechts. Ein Tabstopp von 5 richtet alles richtig aus.

    – Todd A. Jacobs

    14. Mai 2012 um 13:35 Uhr

  • @ZhengKai: Nur als Datenpunkt, habe ich less aliasiert als less -Rcore.pager wie oben definiert, und ich laufe git diff --color-words — alles funktioniert einwandfrei und die Tab-Breite stimmt. Vielleicht hilft das?

    – Kodierer

    11. Juli 2013 um 12:19 Uhr

  • Wenn ich es tue git add -p Der Pager wird nicht verwendet und die Registerkarte wird falsch angezeigt. Wenn Sie beschreiben, wie Sie dies auch beheben können. dann wird die Antwort vollständig sein

    – Eugen Konkow

    23. Dezember 2015 um 18:51 Uhr

  • @IanRogers – Für Farb-Escape-Sequenzen, die Sie verwenden möchten less -R / --RAW-CONTROL-CHARS linux.die.net/man/1/less

    – CodeMonkee

    16. November 2018 um 1:06 Uhr

  • Für diejenigen, die sich fragen, in -x1,5 die 1 steht für die führende Spalte in der Diff-Ausgabe (die +, – und ein Leerzeichen enthält). Nachfolgende Tabs 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. Leute, die darüber hinausgehen -x5 funktioniert für sie … na ja – das ist eine Tabulatorbreite von 5 Leerzeichen ohne führende Spalte, hmm. Unwahrscheinlich?

    – Carlo Holz

    13. April 2019 um 16:11 Uhr

1645705086 750 tabwidth in git show git diff auf 4 setzen
Adius

Da die Antwort https://stackoverflow.com/a/10584237/1850340 wegen meiner Farbeinstellungen für mich 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 ist erforderlich, um das Backslash-Escape der Shell zu umgehen.)

  • Ich bin nicht auf etwas, das ich testen kann, aber wäre dies wo less -R würde ins Spiel kommen? um die ANSI-Farb-Escape-Sequenzen durchzulassen, im Gegensatz zu less -r?

    – CodeMonkee

    16. November 2018 um 1:00 Uhr

843030cookie-checktabwidth in git show / git diff auf 4 setzen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy