avviso: LF sarà sostituito da CRLF.
A seconda dell'editor che si sta utilizzando, un file di testo con LF non dovrebbe essere salvato con CRLF: gli editor recenti possono conservare stile eol. Ma quell'impostazione di configurazione git insiste nel cambiare quelle ...
Assicurati semplicemente che (come ti consiglio qui ):
git config --global core.autocrlf false
In questo modo, eviti qualsiasi trasformazione automatica e puoi comunque specificarle tramite un .gitattributes
file e le core.eol
direttive .
windows git "LF sarà sostituito da CRLF"
Questa coda di avvertimento è arretrata?
No: sei su Windows e menziona la git config
pagina di aiuto
Utilizzare questa impostazione se si desidera avere CRLF
terminazioni di riga nella directory di lavoro anche se il repository non ha terminazioni di linea normalizzate.
Come descritto in " git sostituzione di LF con CRLF ", dovrebbe avvenire solo al checkout (non commit), con core.autocrlf=true
.
repo
/ \
crlf->lf lf->crlf
/ \
Come accennato in Xiaopeng 's risposta , che l'avvertimento è la stessa:
avvertimento: (Se lo fai check out / o cloni in un'altra cartella con la tua core.autocrlf
configurazione attuale ,) LF sarà sostituito da CRLF
Il file avrà le sue terminazioni di riga originali nella tua (corrente) directory di lavoro.
Come menzionato nel git-for-windows/git
numero 1242 :
Sento ancora questo messaggio confuso, il messaggio potrebbe essere esteso per includere una migliore spiegazione del problema, ad esempio: "LF verrà sostituito da CRLF file.json
dopo aver rimosso il file e averlo verificato di nuovo".
Nota: Git 2.19 (settembre 2018), quando si utilizza core.autocrlf
, l'avvertimento "LF sarà sostituito da CRLF" è ora soppresso .
Come giustamente commenta quaylar , se c'è una conversione su commit, lo èLF
solo.
Quell'avviso specifico " LF will be replaced by CRLF
" proviene da convert.c # check_safe_crlf () :
if (checksafe == SAFE_CRLF_WARN)
warning("LF will be replaced by CRLF in %s.
The file will have its original line endings
in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
die("LF would be replaced by CRLF in %s", path);
Viene chiamato da convert.c#crlf_to_git()
, stesso chiamato da convert.c#convert_to_git()
, stesso chiamato daconvert.c#renormalize_buffer()
.
E quell'ultimo renormalize_buffer()
è chiamato solo damerge-recursive.c#blob_unchanged()
.
Quindi sospetto che questa conversione avvenga git commit
solo se detto commit fa parte di un processo di unione.
Nota: con Git 2.17 (Q2 2018), una pulizia del codice aggiunge alcune spiegazioni.
Vedi commit 8462ff4 (13 gennaio 2018) di Torsten Bögershausen ( tboegi
) .
(Unito da Junio C Hamano - gitster
- in commit 9bc89b1 , 13 feb 2018)
convert_to_git (): safe_crlf / checksafe diventa int conv_flags
Durante la chiamata convert_to_git()
, il checksafe
parametro ha definito cosa dovrebbe accadere se la conversione EOL ( CRLF --> LF --> CRLF
) non ritorna in modo pulito.
Inoltre, ha anche definito se i finali di linea devono essere rinormalizzati ( CRLF --> LF
) o mantenuti come sono.
checksafe era un safe_crlf
enum con questi valori:
SAFE_CRLF_FALSE: do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL: die in case of EOL roundtrip errors
SAFE_CRLF_WARN: print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF: keep all line endings as they are
Si noti che una regressione introdotta in 8462ff4 (" convert_to_git()
:
safe_crlf/checksafe
diventa int conv_flags
", 13/01/2018, Git 2.17.0) nel ciclo Git 2.17 ha provocato autocrlf
riscritture per produrre un messaggio di avviso
nonostante l'impostazionesafecrlf=false
.
Vedi commit 6cb0912 (04 giu 2018) di Anthony Sottile ( asottile
) .
(Unito da Junio C Hamano - gitster
- in commit 8063ff9 , 28 giu 2018)