web-dev-qa-db-fra.com

définition de la largeur de tabulation à 4 dans git show / git diff

Au travail, nous sommes plusieurs développeurs et nous n'avons pas de guide de style de code, et certains développeurs mettent en retrait avec des tabulations, et d'autres avec 4 espaces (heureusement, personne du retrait avec des espaces n'utilise des espaces différents de 4 espaces). En général, ce n'est pas un (gros) problème car dans nos éditeurs, nous définissons tabwidth=4 et toute l'indentation semble correcte.

Mais en git diff ou git show c'est ce qui apparaît:

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";
+}

Le problème est git diff ou git show où chaque onglet apparaît aussi large que 8 espaces (enfin, en réalité apparaît comme un onglet, et le Shell (bash dans mon cas) montre l'onglet comme 8 espaces. Je suppose qu'il doit y avoir une configuration bash pour changer cela, mais je voudrais savoir si git a une option pour afficher les onglets en 4 espaces dans diff/show, car certains développeurs travaillent avec zsh au lieu de bash.

Des idées?

67

Je crois git config --global core.pager 'less -x1,5'

Références:

100
codemonkee

Comme la réponse https://stackoverflow.com/a/10584237/185034 n'a pas fonctionné pour moi en raison de mes paramètres de couleur, j'ai trouvé la solution suivante:

TAB=$'\t' && git config --global core.pager "sed 's/$TAB/    /g' | less" && unset TAB

Cela remplace tous les caractères de tabulation par 4 espaces avant de l'afficher avec moins. (La solution de contournement TAB est nécessaire pour contourner la fuite de barre oblique inverse des obus)

3
adius