Cambiar un caracter en un file lleva a MSysGit a pensar que todo el file ha cambiado

Tengo un repository git que contiene el código C # y estoy ejecutando MSysGit en Windows.

core.autocrlf está activado, y estoy usando los .gitattributes de esta pregunta , y "renormalicé" mi repository como se menciona en la parte inferior de esta guía de Github .

Ahora, para algunos de los files .cs en mi repository, si cambio incluso un carácter, MSysGit piensa que todo el file ha cambiado.

He clonado el repository nuevo. Intenté editar el file primero en Visual Studio, pero luego intenté abrirlo en SciTE, que me muestra los caracteres de final de línea y tabulación, y también confío en que no haga nada extraño al file (como cambiar la encoding).

Por lo tanto, cloné el repository nuevo:

 $ git clone git clone git@git.assembla.com:my-repo.v2.git $ cd my-repo/ 

Reviso el repository y el file:

 $ git status # On branch master nothing to commit (working directory clean) $ git diff path/to/myfile.cs $ 

Abro el file en SciTE (tenga en count que las terminaciones de línea son CRLF y no hay tabs):

 using System; using System.Collections.Generic; ... 

y cambie un caracter (y tenga en count que CRLF y sin tabs siguen siendo verdaderas):

 using System; !using System.Collections.Generic; ... 

y ahora git piensa que todo ha cambiado:

 $ git diff path/to/myfile.cs diff --git a/path/to/myfile.cs b/Dpath/to/myfile.cs --- a/path/to/myfile.cs +++ b/path/to/myfile.cs @@ -1,116 +1,116 @@ -<U+FEFF>using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Microsoft.Practices.EnterpriseLibrary.Data; -using DataModel.Models; -using DataModel.Mappers.Interfaces; -using System.Data.Common; -using System.Data; ... 

Un progtwig normal de diferencias no cree que los dos files sean tan diferentes, y git diff en Unix no cree que sean demasiado diferentes, pero msysgit sí.

¿Alguien alguna vez se encuentra con esto antes o tiene alguna idea?

Algunas cosas que pueden hacer que Git muestre todo el file como cambiado:

  • Terminaciones de línea, pero dijiste que las verificaste y son las mismas;
  • Sangría: VS (especialmente si tiene algunas extensiones instaladas) puede cambiar la sangría de las tabs a espacios o viceversa. Puede verificar esto con "Mostrar espacios en blanco" (Ctrl-R, Ctrl-W en VS o la opción correspondiente en su diferencia).
  • Codificación: si VS decide volver a codificar el file en una encoding diferente (por ejemplo, UTF16), podría aparecer como completamente modificado, aunque la representación textual se vería igual.