cuando uso git config --global <some option> <some value>
Git escribirá la entrada relevante en mi ~/.gitconfig
sangrado por uno pestaña. Ya que mi ~/.gitconfig
está controlado por versiones y quiero que no sea un desastre, luego tengo que ir a mano y reemplazar la pestaña con espacios.
¿Se le puede decir a Git que use espacios automáticamente al agregar entradas a ~/.gitconfig
?
(Tenga en cuenta que esto es no sobre la sangría en el código que estoy cometiendo con Git, sino la sangría en el propio archivo de configuración de Git).
Ashutosh Jindal
Esto es lo que funcionó para mí (tenga en cuenta que, como @rasjani ha señalado en un comentario, no hay opción para prevenir git de insertar una pestaña en primer lugar cuando se usa git config
.)
Crear el filtro
Crear un filter
para convertir tabulaciones en espacios automáticamente tan pronto como haga una git add
para un archivo. Este filtro es creado por
git config --global filter.spacify.clean 'expand --tabs=4 --initial'
los expand
el comando dice que convert each tab character at the beginning of line to 4 space characters
Por lo tanto, la definición del filtro incluye tanto qué lo hace y para cuando lo hace (es decir, para qué operación de git).
(En OSX, necesitaría usar gexpand
después instalando coreutils haciendo un brew install coreutils
)
Por supuesto, tendría que decidir el alcance (--system
, --global
o el predeterminado --local
) de la configuración anterior.
Especifique los patrones de archivos/ruta a los que se aplicará el filtro
Por ejemplo, para su repositoriocrear un .git/info/attributes
con el siguiente contenido:
.* filter=spacify
esto dice que apply the spacify filter to any files that match the pattern .*
antes de que estos archivos se confirmen en el repositorio.
Tenga en cuenta que lo anterior solo afectará a los nuevos archivos que se agreguen al repositorio. Si desea que esto se haga para todos los archivos existentes, puede ejecutar expand
manualmente O, podría hacer que git lo haga por nosotros así:
git config --global filter.spacify.smudge 'expand --tabs=4 --initial'
git checkout HEAD -- **
Utilizando el spacify
filtro para smudge
hará que el filtro se aplique a los archivos que se están desprotegiendo. Después del pago, debería ver un montón de cambios en los archivos de puntos que tenían las pestañas principales convertidas en espacios. Vuelva a comprometerlos y, de ahora en adelante, el smudge
y clean
¡Duo mantendrá tus archivos de puntos sin pestañas!
Actualización: ¡la solicitud de extracción!
Aquí hay una solicitud de extracción para su repositorio: https://github.com/raxod502/radian/pull/156
-
Si bien esta solución ayuda, me gustaría evitar que Git inserte pestañas en primer lugar. Por ejemplo, el último comando que das (
git config --global filter.spacify.smudge ...
) voluntad sí mismo insertar una pestaña en mi.gitconfig
!– Radón Rosborough
17/10/2016 a las 20:05
-
Pero esa pestaña no terminará en su repositorio ya que tan pronto como confirme el cambio
.gitconfig
laspacify
el filtro hará su magia negra. He actualizado mi respuesta para enfatizar el hecho de que al momento de escribir esto, no parece haber una opción para obligar a git a usar espacios en lugar de tabulaciones paragit config
.– Ashutosh Jindal
17/10/2016 a las 20:17
-
Bueno, eso me entristece. Aceptaré esta respuesta ya que es la siguiente mejor opción para alguien que quiere usar espacios.
– Radón Rosborough
18 de octubre de 2016 a las 3:43
¿Qué tiene de malo la pestaña?
– David
17/10/2016 a las 16:48
también, ¿por qué es su personal
~/.gitconfig
publicado en SCM? es toda tu casa (~
) directorio bajo control de versiones? ¿Me estoy perdiendo de algo?– ddavison
17/10/2016 a las 16:51
No hay una opción de configuración real para decirle a “git config” que use pestañas en lugar de espacios, pero como mencionó que su .gitconfig es parte del repositorio, puede configurar un filtro para su .gitconfig con una opción limpia para desexpandir y luego gitattribute para usar ese filtro … si necesita un ejemplo, escribiré uno; de lo contrario, solo use google y aterrice aquí: alexzaytsev.me/2014/10/19/…
– rasjani
17/10/2016 a las 16:55
@sircapsalot Es extremadamente común publicar colecciones de dotfiles, por ejemplo, en Github. Esto es lo que he hecho. Uno de mis archivos de puntos es
~/.gitconfig
; se incluye porque contiene muchos alias útiles que podrían interesar a otras personas. Puede ver el repositorio completo aquí.– Radón Rosborough
17/10/2016 a las 17:18
Wow, la discusión anterior recuerda mucho a youtube.com/watch?v=SsoOG6ZeyUI
– Ashutosh Jindal
17/10/2016 a las 18:47