GIT sigue introduciendo cambios sin procesar en el pago y envío

Creé un nuevo repository en BitBucket Server, y está lleno y en uso. Sin embargo, varios de nuestros usuarios (yo incluido) están teniendo un problema donde aparecen cambios inesperados en el process de pago. No aparece en cada pago, solo esporádicamente.

Los cambios parecen ser una reescritura completa del file (s) en cuestión. git diff no muestra, por ejemplo, que todas las terminaciones de línea hayan cambiado. También estamos utilizando SVN Mirror para traer cambios desde nuestro repository de subversión más antiguo en trunk -> master. Todo el mundo está usando la versión 2.14 de git en Windows.

Los siguientes commands lo arreglarán temporalmente, pero inevitablemente regresa

git rm --cache -r git reset --hard 

Ejemplo:

 MINGW64 /c/code/git/repo (master) $ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean MINGW64 /c/code/git/repo (master) $ git checkout - Switched to branch 'dev/test_branch' MINGW64 /c/code/git/repo (dev/test_branch) $ git status On branch dev/test_branch nothing to commit, working tree clean MINGW64 /c/code/git/repo (dev/test_branch) $ git checkout - Switched to branch 'master' Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) MINGW64 /c/code/git/repo (master) $ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: <snip-filename>.java modified: <snip-filename2>.java ... etc ... modified: <snip-lastfilename>.java no changes added to commit (use "git add" and/or "git commit -a") 

Editar: Al verificar git diff -w para excluir los cambios en el espacio en blanco, no se muestran diferencias, por lo que definitivamente parece estar relacionado con eol.

Para este problema, terminó siendo debido a la duplicación de Subversion. Cuando está habilitado, las terminaciones de línea provenientes de Subversion no se corrigieron automáticamente, y también su eol original. Con el repository de GIT establecido a través de .gitattributes, o mediante la configuration pnetworkingeterminada de un usuario, para corregir automáticamente las terminaciones de línea, esto provocaría una discrepancia en la que el final de línea original era CRLF, y la versión actualizada solo LF.

Esto fue identificado al usar

 git diff --ignore-space-at-eol 

que no mostró diferencias con la versión anterior.

La solución fue comprometer e insert los files ajustados de final de línea en GIT. Esto luego se reflejó en Subversion y los volvió a sincronizar.

Para get más información, encontré una guía muy útil aquí: https://help.github.com/articles/dealing-with-line-endings/