2012-05-14 17 views
51

En el trabajo somos varios desarrolladores y no tenemos una guía de estilo de código, y algunos desarrolladores sangran con pestañas, y algunos otros con 4 espacios (afortunadamente nadie de la sangría con espacios la gente usa diferentes de 4 espacios). En general, este no es un problema (grande) porque en nuestros editores establecemos tabwidth=4 y toda la sangría parece correcta.configurando tabwidth a 4 en git show/git diff

Pero en git diff o git show eso es lo que parece:

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

El problema es git diff o git show donde cada pestañas aparece tan amplia como 8 espacios (bueno, en realidad aparece como una pestaña, y la cáscara (bash en mi caso) muestra la pestaña como 8 espacios. Supongo que debe haber alguna configuración de bash para cambiar esto, pero me gustaría saber si git tiene una opción para generar pestañas como 4 espacios en diff/show, como algunos desarrolladores trabajar con zsh en lugar de bash.

¿Alguna idea?

+3

en un mundo ideal, los desarrolladores usarían espacios y no tendrían problemas tontos como este. – sashang

+3

Estoy completamente en desacuerdo. ¿Por qué representarías algo con 4 caracteres cuando puedes representarlo con 8? –

Respuesta

82

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

Referencia: git-scm chp7-1

+2

El argumento para less debe ser '-x5' porque los símbolos +/- de la diff unificada no afectan la ubicación de la tab-stop, pero * do * empujan todos los espacios un carácter a la derecha. Una tab-stop de 5 alinea todo correctamente. –

+0

sí, eso funciona, estableciendo '-x5' como dijo CodeGnome. Muchas gracias a los dos –

+0

urgh, funcionó solo en el primer nivel de sangría, en el segundo, tercero, ... no se alinea debido al + inicial en los diffs. Saldré en '-x4' ya que al establecerlo más alto lo desalinea un char más por cada nivel de sangría (y también en líneas no agregadas/eliminadas es más consistente). –

2

Como la respuesta https://stackoverflow.com/a/10584237/1850340 no funcionó para mí debido a mi configuración de color que se me ocurrió siguiente solución:

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

se reemplazan todos pestaña caracteres con 4 espacios antes de mostrarlo con menos. (La solución TAB es necesaria para eludir el escape de barra diagonal inversa)