2016-01-30 11 views
7

Stavo cercando l'impostazione appropriata da utilizzare in determinati casi d'uso, ma non ho trovato alcuna fonte che descrivesse lo stesso. Pertanto, sto facendo questa domanda per servire come soluzione a tutti coloro che cercano l'impostazione corretta per l'opzione autocrlf di git.Impostazione corretta per git autocrlf come per il caso d'uso

Uso Caso 1: Sono su Mac, gli altri sviluppatori sono tutti su Windows. Stanno gestendo il codice sorgente prima di unirmi.

Uso caso 2: Sono su Windows, gli altri sviluppatori sono tutti su Mac. Stanno gestendo il codice sorgente prima di aderire.

Caso di utilizzo 3: Sono su Linux, gli altri sviluppatori sono tutti su Windows. Stanno gestendo il codice sorgente prima di unirmi.

Uso Caso 4: Sono su Windows, gli altri sviluppatori sono tutti su Linux. Stanno gestendo il codice sorgente prima di unirmi.

Use Case 5: Sono su Linux, gli altri sviluppatori sono tutti su Mac. Stanno gestendo il codice sorgente prima di unirmi.

Usa caso 6: Sono su Mac, gli altri sviluppatori sono tutti su Linux. Stanno gestendo il codice sorgente prima di partecipare.

Quale impostazione di git core.autocrlf dovrei utilizzare?

EDIT: Perché questa domanda non è un duplicato a molte domande simili:

Tutte le altre domande e le loro risposte forniscono i fatti necessari e le conoscenze che lascia molto da fare da parte del lettore. Questa domanda mira a chiedere la risposta specifica a scenari specifici.

+1

Possibile duplicato di [git che sostituisce LF con CRLF] (http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf) – CodeWizard

+0

Ho visto quasi tutte le domande relative allo stesso ma no si chiede specificamente l'impostazione da utilizzare per un particolare caso d'uso. Tutte queste domande forniscono la conoscenza ma non rispondono cosa fare :) –

+1

Non dovresti usare 'core.autocrlf', dovresti invece impostare correttamente il tuo' .gitattributes'. –

risposta

3

Semplice:

git config core.autocrlf false 

(per tutto e qualsiasi scenario)

core.autocrlf è un config, il che significa che non è spinto o clonato con il pronti contro termine: deve essere impostato dall'utente

Era il modo legacy per gestire eol a livello di pronti contro termine.

Cosa si desidera utilizzare (aggiungere o modificare a seconda del proprio scenario) sono gitattributes core.eol directives.

  • .gitattributes is a file che può essere gestito nel repository git come qualsiasi altro file. Una volta concordato un criterio eol, tale politica verrà applicata a ciascun clone.
  • è possibile impostare core.eol direttive per un file, o un gruppo di file se si desidera (in contrasto con il livello di repository configurazione globale core.autocrlf)

Per ambiente eterogeneo, l'core.eol (solo per i file tu ritieni problematico) dovrebbe essere native (se sospetti che il tuo editore insista sull'uso del sistema eol invece di usare quello già presente nel file).

Per ulteriori informazioni, vedere "Mind the End of Your Line".

0

Non preoccuparti di core.autocrlf; aggiungere un file .gitattributes nella directory principale e mettere la seguente linea in:

* text=auto 

Questo farà sì che git per convertire automaticamente tutti i fine riga a LF sopra commette, e (per le macchine Windows) convertire i fine riga per CRLF sulla cassa .

Nota che per i casi 1 e 3, dove gli sviluppatori esistenti sono su Windows, aggiungere questa riga a .gitattributes potrebbe far sembrare che all'improvviso ci siano un sacco di modifiche da eseguire. Questo perché nel repository ci sono molti file con CRLF e git sa che deve convertirli tutti in LF. Vai avanti e applica questi cambiamenti, anche se sembra che nulla sia cambiato davvero.

Un'altra cosa da notare è che se tutti si trovano sullo stesso sistema operativo, non mi preoccuperei nemmeno di convertire le terminazioni di linea; in tal caso, inserisci la riga * -text nel tuo file .gitattributes in modo che non avvenga alcuna conversione.

Problemi correlati