2012-08-06 13 views
14

¿Hay alguna manera de determinar las terminaciones de línea en un repositorio de git existente?¿Hay alguna forma de determinar las terminaciones de línea en un repositorio git existente?

Si clono un repositorio existente, ¿cómo determino qué core.autocrlf fue utilizado por el creador?

Todavía no estoy seguro cuál es la mejor configuración para core.autocrlf por ejemplo, en una caja de ventanas (ya que hay múltiples opiniones: Distributing git configuration with the code o https://help.github.com/articles/dealing-with-line-endings) pregunta

Bono: se puede determinar en las ventanas (con herramientas estándar) si un repositorio tiene terminaciones de línea mixtas (por configuración core.autocrlf incorrecta) a través de todas las confirmaciones?

+0

Responde esta primera pregunta [aquí] (http://stackoverflow.com/q/25697254/1436671). –

Respuesta

2

yo todavía mantener esa configuración (core.autocrlf) a false, como explico en " Distributing git configuration with the code" que lo mencionas, y utiliza eol gitattributes directive para un control más preciso.

Dicho esto, para detectar a los finales de línea mixtos:

  • conjunto core.autocrlf a true
  • git clone tu repositorio
  • git diff: si las diferenciaciones son visibles inmediatamente después de su clon ... algunos EOL automática las conversiones solo tuvieron lugar en el árbol de trabajo.

actualización de 2016 (4 años después): a more modern way to detect eol changes:

git -c color.diff.whitespace="red reverse" diff -R -- afile 
10

para comprobar lo que los finales de línea en realidad estaban comprometidos en el repositorio (independientemente de la configuración core.autocrlf), pruebe lo siguiente:

git grep -I --files-with-matches --perl-regexp '\r' HEAD 

(-I significa que los archivos binarios no deben ser examinados.)

+0

Mi msysgit no se compiló con USE_LIBPCRE, esto funcionaría demasiado 'git grep -I-files-con-coincidencias --basic-regexp '\ ​​r' HEAD' (no obteniendo resultados ahora también con '\ r \ n ') –

+2

Pruebe esto: 'git grep -I --files-con-coincidencias $' \ r 'HEAD' – robinst

+0

Este comando devuelve todos los archivos en HEAD con * nix ending, o? ¿'Git grep -I-files-con-coincidencias $ '\ r \ n' HEAD' entregaría los finales de línea de DOS? –

1

La mejor línea de terminaciones práctica está aquí: https://stackoverflow.com/a/10855862

Para determinar los finales de línea en un repositorio Git existente:

  1. Establecer core.autocrlf-false, por lo que no va a cambiar las terminaciones de archivos durante la transmisión de archivos.
  2. git clone su repo por ej. en un nuevo directorio.
  3. Utilice el editor de texto que muestra los finales de línea para abrir los archivos (por ejemplo, PHPStorm lo hace). Debe abrir varios archivos ya que los finales de línea pueden diferir de un archivo a otro.

No se puede determinar qué core.autocrlf fue utilizado por el creador ya que es la configuración local, excepto que el repositorio tiene el archivo .gitattributes.

En Windows, si no está utilizando .gitattributes simplemente use core.autocrlf true como lo establece de forma predeterminada.

Cuestiones relacionadas