2012-05-14 13 views
51

Al lavoro siamo diversi sviluppatori e non abbiamo una guida in stile codice, e alcuni sviluppatori indentano tab e altri con 4 spazi (fortunatamente nessuno del rientro con spazi le persone usano diversi da 4 spazi). In generale questo non è un problema (grosso) perché nei nostri editor abbiamo impostato tabwidth=4 e tutto il rientro sembra corretto.impostazione tabwidth a 4 in git show/git diff

Ma in git diff o git show questo è quello che appare:

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

Il problema è git diff o git show dove ogni schede appare grande come 8 spazi (beh, in realtà appare come una scheda, e la shell (bash nel mio caso) mostra la scheda come 8 spazi. Suppongo che ci debba essere qualche bash config per cambiarlo, ma mi piacerebbe sapere se git ha un'opzione per l'output di tabulazioni come 4 spazi in diff/show, come alcuni sviluppatori funziona con zsh anziché bash.

Qualche idea?

+3

in un mondo ideale, gli sviluppatori utilizzano tutti gli spazi e non si avranno problemi sciocchi come questo. – sashang

+3

Sono completamente in disaccordo. Perché dovresti rappresentare qualcosa con 4 caratteri quando puoi rappresentarlo con 8? –

risposta

82

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

Riferimento: git-scm chp7-1

+2

L'argomento di meno dovrebbe essere '-x5' perché i simboli +/- del diff unificato non influiscono sulla posizione del punto di tabulazione, ma essi * fanno * spingono tutti gli spazi di un carattere a destra. Un tab-stop di 5 allinea tutto correttamente. –

+0

sì, funziona, impostando '-x5' come diceva CodeGnome. Grazie mille al numero –

+0

urgh, ha funzionato solo sul primo livello di rientro, al secondo, terzo, ... non si allinea a causa del + iniziale nelle differenze. Partirò a '-x4' come impostandolo su disallineamenti più alti di un carattere in più per ogni livello di indentazione (e anche su righe non aggiunte/rimosse è più coerente). –

2

Come la risposta https://stackoverflow.com/a/10584237/1850340 non ha funzionato per me a causa delle mie impostazioni di colore mi si avvicinò con seguente soluzione:

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

Questo sostituisce tutte scheda personaggi con 4 spazi prima di visualizzarli con meno. (La soluzione TAB è necessaria per aggirare l'escape backslash delle shell)