¿Cuestión de CRLF de Bitbucket?

Problema: Bitbucket muestra que todo el file ha cambiado aunque no veo diferencias. Y no hay conflictos de fusión en estos files.

Detalles: Creé una twig sprint (llamada "sprintbranch") y los desarrolladores crearon una twig característica (llamada "featurebranchX") de la twig sprint. Comencé a fusionar twigs de características de vuelta a la twig de sprint a medida que se implementaron las características. Ahora hay dos escenarios en los que me enfrento a un problema:

  1. Desarrollador crea una request de extracción para fusionar featurebranch1 en sprintbranch
  2. Si hay conflictos de fusión, el desarrollador fusiona sprintbranch en featurebranch1 y crea una request de extracción para fusionar featurebranch1 en sprintbranch.

Ambas veces bitbucket muestra que todo el file ha cambiado. Y no hay conflictos de fusión.

Cuando esto sucede, no puedo hacer una revisión del código ya que no sé qué líneas específicas han sido modificadas por el desarrollador. También pierdo historia en este punto; mirando hacia atrás, no seré capaz de descubrir qué se implementó o fusionó en la twig de sprint.

Mi suposition es que el problema es con los finales de línea. Algo que ver con CRLF. Pero cuando comprometo mi trabajo, veo que las terminaciones de línea apropiadas se utilizan automáticamente (ya sea por git o por la herramienta como SmartGit)

¿Cómo resuelvo esto para que no siga sucediendo?

Actualizar:

Acabo de descubrir que puedo agregar una cadena de consulta w=1 al final de una url de una request de extracción para ignorar las diferencias cr.

Pero estos files todavía están allí en la confirmación y cuando los fusiono nuevamente, includeán esas diferencias ¿no?

Aunque Bitbucket puede ignorar espacios en blanco en diffs (utilizando el parámetro de consulta w=1 ), esos cambios seguirán incluidos en la combinación.

Pero puedes configurar git para convertir todas las terminaciones de línea a LF o CRLF. Su equipo primero debe decidir qué opción será, y luego establecer la propiedad de text en el file .gitattributes consecuencia, de la siguiente manera:

 * text eol=lf 

Esta página de ayuda de Github muestra más información. (La información es para git en general, no específicamente Github).

También necesita la opción de configuration global git config --global core.autocrlf input (Mac & Linux) o git config --global core.autocrlf true (Windows).

 # Make sure you won't loose your work in progress $ git add . -u $ git commit -m "Saving files before refreshing line endings" # Remove every file from the git index $ git rm --cached -r . # Rewrite the git index $ git reset --hard # Prepare all changed files for commit $ git add . # It is perfectly safe to see a lot of messages here that read # "warning: CRLF will be replaced by LF in file." # And commit. $ git commit -m "Normalize all the line endings" 

Más información está disponible en el artículo de Github.