2015-04-03 10 views
18

Abbiamo questo nel nostro file .gitattributes:Cosa faranno `* text = auto eol = lf` in gitattributes?

* text=auto eol=lf 

Mi piacerebbe capire esattamente ciò che fa.

La prima parte è text=auto. Dalla documentation:

Ciò garantisce che tutti i file che Git considera come testo saranno normalizzati terminazioni (LF) linea nel repository.

La parte importante è che Git esegue la normalizzazione solo per i file rilevati come file di testo.

Tuttavia, non sono sicuro della parte eol=lf. Penserei che farà anche la normalizzazione solo per i file di testo, ma non trovo supporto nella documentazione e abbiamo avuto un'istanza quando anche i nostri file PNG sono stati normalizzati, rendendoli non validi.

c'è un impostazioni come il precedente che sarebbe fondamentalmente dire "fare la normalizzazione in entrambe le direzioni per file di testo, e lasciare i file binari da solo"?

risposta

12

Git 2.10 fixed this e ora si comporta come ci si aspetterebbe.

+0

My Git Client era in 2.9.15, l'aggiornamento a le ultime 2.15 risolve il mio problema. Grazie – Nounours

11

La risposta è no, Git al momento (a partire da 2.3) non può effettuare il checkout di conversione EOL con rilevamento automatico di formati binari e di testo in modo che elabori solo il testo. La soluzione alternativa consiste nel specificare eol=lf solo per i tipi di file selezionati (ad es., *.txt) o, inversamente, contrassegnare determinati tipi di file come binari utilizzando ad es. *.png binary).

correlati: feature proposal on Git mailing list


* text=auto

Ciò correttamente normalizzare file di testo nel repository. Tuttavia, la seconda parte (forzatura LF alla cassa) non può essere raggiunta facilmente oggi perché l'aggiunta di eol=lf sfortunerà anche i file binari. L'unica soluzione oggi è contrassegnare determinati tipi per la conversione (ad esempio, *.txt eol=lf) o, inversamente, contrassegnare alcuni tipi come binari (ad esempio, *.png binary).

Entrambi soffrono lo stesso problema: i tipi di file specifici devono essere incluso in modo esplicito nel file .gitattributes, il che significa che entrambi i tipi devono essere noti prima del tempo o di tutti gli sviluppatori devono ricordarsi di aggiornare il .gitattributes file ogni volta che appare un nuovo tipo di file nel progetto. Quale non lo faranno.