¿Se le puede decir a git que use espacios en ~/.gitconfig?

4 minutos de lectura

cuando uso git config --global <some option> <some value>Git escribirá la entrada relevante en mi ~/.gitconfigsangrado 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).

  • ¿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

Avatar de usuario de Ashutosh Jindal
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 la spacify 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 para git 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

¿Ha sido útil esta solución?