2012-12-04 15 views
5

Ho un file .gitattributes nel mio repository che assomiglia a questo.gitattributes con core.autocrlf impostata

* text=auto 
*.txt text 

ho core.autocrlf impostata nel repository, le impostazioni globali, e di sistema. La mia comprensione, basata sulla documentazione per gitattributes, è che tutti i file nel repository i cui nomi terminano con .txt devono essere controllati con le terminazioni di linea native. Quello che sto vedendo, però, è che i file .txt hanno sempre LF per i finali di linea, anche su Windows. Data questa configurazione, perché la riga non termina con CRLF su Windows?

+0

Io avrei pensato che la tua seconda linea fosse sconfitta, nel qual caso dovresti scambiare le linee intorno .. Ho visto qualcuno su SO dire che non puoi impostare qualcosa una seconda volta in .gitattributes e nel tuo esempio che hai effettivamente impostato * .txt file in text = auto sulla prima riga. – sabgenton

+0

@sabgenton, dalla [man page] (http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html), "Quando più di un modello corrisponde al percorso, una linea successiva sovrascrive una riga precedente, questa operazione viene eseguita per attributo. " Inoltre, potresti voler fare riferimento al link nella mia risposta qui sotto. – cleek

+0

possibile duplicato di [fine linea git: renormalize non sembra eseguire il checkout della fine della riga destra] (http://stackoverflow.com/questions/13531988/git-line-endings-renormalize-does-not-seem-to-checkout -illegamento della linea destra) –

risposta

12

Il problema è che c'è un bug nella gestione di core.eol. La documentazione per i gitattributes dice che se non è impostata, verrà utilizzato il nativo, che dovrebbe essere predefinito per le terminazioni di linea appropriate per il sistema (CRLF per Windows, LF per unix), lasciando tuttavia core.eol unset o impostandolo su nativo sul mio sistema risultati sempre in LF per terminazioni di linea. La risposta, quindi, è impostare core.eol su crlf su Windows in modo esplicito. I commenti allo http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/ mi hanno portato a questa risposta.

+2

Grazie per aver confermato questo, ho pensato che stavo impazzendo per un po '. Ho archiviato [un bug] (http://github.com/msysgit/msysgit/issues/97). – bricelam

+0

@Brice: Grazie per aver registrato questo bug. Stavo per pubblicare la stessa domanda. –

+0

Sono stato io a fare il commento dopo aver chiesto qui: vedere la risposta [qui] (http://stackoverflow.com/a/13552603/281545) per un collegamento a una segnalazione/correzione di un bug. Davvero felice che attiri l'attenzione è molto fastidioso :) –

-3

è necessario impostare core.autocrlf per l'immissione. Su Windows è impostato su true.

Se non si condivide x-platform, impostarlo su false e dimenticare completamente gli attributi.

+0

Cattivo suggerimento sulla seconda riga. Non sai se deciderai di condividere con x-platform più tardi, quindi è saggio configuralo fin dall'inizio. – orad