tipos tag repositorio example etiquetas eliminar crear git

repositorio - git push tag



Distribución de la configuración de git con el código (4)

Al tratar de estandarizar la plataforma para los desarrolladores, una de mis necesidades sería comprometer el .git/config para que todos tengan la misma configuración CRLF sin olvidar configurarlo a mano.

¿Cómo configuro esto?

Estoy un poco preocupado por toda esta negatividad contra autocrlf . ¿Por qué no eliminar esta característica si no funciona? O los creadores de esta función son malentendidos o hicieron un experimento fallido con ella y debería eliminarse para evitar que más personas pierdan el tiempo (leyendo la página del hombre oscuro, haciendo preguntas, personas respondiendo esas preguntas, etc.).


El .git/config puede ser reemplazado localmente por ~/.gitconfig .

Por lo tanto, como parte del script de compilación, Makefile o provision, puede proponer el cambio para los usuarios en su ~/.gitconfig , o cargar el script local .gitconfig través de git config .

Por ejemplo, cree un nuevo .gitconfig con algunas configuraciones y cárguelo de la siguiente manera:

git config --local include.path "/path/to/.gitconfig"

o solicite a los usuarios que tengan en su ~/.gitconfig estas líneas:

[include] path = .gitconfig

Si está utilizando Vagrant como parte de su distribución de código, puede cargar git config desde Vagrantfile de la siguiente manera:

system(''GIT_TRACE=1 git config --local include.path "$(git rev-parse --show-toplevel)/git/gitconfig"'');

a continuación, git/gitconfig su configuración de git/gitconfig en git/gitconfig , de modo que cada vez que los usuarios ejecuten el aprovisionamiento de su VM, este archivo se cargue automáticamente para su git en el equipo host (p. ej. para exigir que core.filemode esté deshabilitado, Windows no tendrá cualquier problema con los permisos de archivos).

Para forzar terminaciones de línea para los usuarios, debe usar .gitattributes en .gitattributes lugar, que debería funcionar de manera .gitattributes . Sintaxis de muestra para usar finales de línea tipo Unix ( LF ):

# Drupal git normalization # @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html # @see https://www.drupal.org/node/1542048 # Define text file attributes. # - Treat them as text. # - Ensure no CRLF line-endings, neither on checkout nor on checkin. # - Detect whitespace errors. # - Exposed by default in `git diff --color` on the CLI. # - Validate with `git diff --check`. # - Deny applying with `git apply --whitespace=error-all`. # - Fix automatically with `git apply --whitespace=fix`. *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 # Auto-detect text files, ensure they use LF (not recommended). #* text=auto eol=lf # Define binary file attributes. # - Do not treat them as text. # - Include binary diff in patches instead of "binary files differ." *.gz -text diff


Puede ser una mejor forma de usar el hardlink :

En el sistema * nix o OS X:

ln .git/config git-config git add git-config git commit -m "Now tracking git config file"

En Windows en sistema de sistema de archivos NTFS:

mklink /H git-config .git/config git add git-config git commit -m "Now tracking git config file"

Pero debemos recordar que al clonar el proyecto para aplicar las configuraciones para realizar el procedimiento inverso:

En el sistema * nix o OS X:

git clone FROM_PROJ_URL rm .git/config ln git-config .git/config

En Windows en sistema de sistema de archivos NTFS:

git clone FROM_PROJ_URL del .git/config mklink /H .git/config git-config


Si está utilizando un sistema operativo de la familia Unix, recomendaría simplemente crear un enlace simbólico.

ln -s .git/config git-config git add git-config git commit -m "Now tracking git config file"


Siempre he encontrado la propiedad autocrlf config problemática. (como se expresa en mi respuesta Git 1.6.4 beta en Windows (msysgit) - terminación de línea Unix o DOS )

Nota: msysgit issue 538 para establecerlo en true (que es el valor predeterminado establecido por el instalador msysgit), pero no estoy convencido.

Preferiría una de las siguientes tres soluciones para:

  • configurando un estilo de fin de línea
  • hacer que la configuración se propague a través de los diferentes repositorios Git

1. Uso de la configuración nueva configuración core.eol (1.7.2+)

Establece el tipo de terminación de línea para usar en el directorio de trabajo para los archivos que tienen establecida la propiedad de texto.
Las alternativas son '' lf '', '' crlf '' y '' native '', que usa la terminación de línea nativa de la plataforma.
El valor predeterminado es nativo.

2. un pago / cheque .gitattribute . Consulte la página de crlf : crlf o core.autocrlf es la forma de registrar en un archivo .gitattributes lo que anteriormente era un atributo de configuración local.

3. un controlador de filtro de atributo git que puede:

  • hacer cumplir cualquier tipo de estándar de formato que desee establecer
  • aplicar esos estándares a ciertos archivos / directorios
  • ser grabado como un archivo de configuración ( .gitattributes ) capaz de ser empujado a cualquier lugar.