Ho un repository git contenente codice C # e sto eseguendo MSysGit
su Windows.
core.autocrlf
è core.autocrlf
, e sto usando il .gitattributes
da questa domanda , e ho “rinormalizzato” il mio repository come accennato in fondo a questa guida di Github .
Ora per alcuni file .cs nel mio repository, se cambio anche un solo carattere, MSysGit
pensa che l’intero file sia cambiato.
Ho clonato il repository fresco. Ho provato a modificare il file prima in Visual Studio, ma poi ho provato ad aprirlo in SciTE che mi mostra i caratteri di fine riga e tab, e inoltre mi fido di non fare nulla di strano nel file (come cambiare la codifica).
Quindi, ho clonato il repository fresco:
$ git clone git clone [email protected]:my-repo.v2.git $ cd my-repo/
Controllo il repository e il file:
$ git status # On branch master nothing to commit (working directory clean) $ git diff path/to/myfile.cs $
Apro il file in SciTE (nota che le terminazioni di riga sono CRLF
e non ci sono tabulazioni):
using System; using System.Collections.Generic; ...
e cambia un carattere (e nota che CRLF
e nessun tab sono ancora veri):
using System; !using System.Collections.Generic; ...
e ora git pensa che tutto sia cambiato:
$ 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 @@ -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 normale programma diff non crede che i due file siano così diversi, e git diff
su Unix non pensa che siano troppo diversi, ma msysgit
.
Qualcuno lo ha mai incontrato prima o ha qualche idea?
Alcune cose che possono rendere Git mostrare l’intero file come modificato: