avertissement : LF sera remplacé par CRLF.
Selon l'éditeur que vous utilisez, un fichier texte avec LF ne sera pas nécessairement enregistré avec CRLF : les éditeurs récents peuvent préserver style eol. Mais ce paramètre de configuration de git insiste pour changer ces...
Assurez-vous simplement que (comme Je recommande ici ) :
git config --global core.autocrlf false
De cette façon, vous évitez toute transformation automatique, et vous pouvez toujours les spécifier par le biais d'un fichier de type .gitattributes
fichier y core.eol
directives .
Windows git "LF sera remplacé par CRLF"
Cette queue d'avertissement est-elle à l'envers ?
Non : vous êtes sous Windows, et le git config
page d'aide mentionne
Utilisez ce paramètre si vous voulez que CRLF
dans votre répertoire de travail même si le référentiel n'a pas de terminaisons de lignes normalisées.
Comme décrit dans " git remplace LF par CRLF ", cela ne devrait se produire qu'au moment du paiement (pas d'engagement), avec core.autocrlf=true
.
repo
/ \
crlf->lf lf->crlf
/ \
Comme mentionné dans XiaoPeng 's réponse cet avertissement est le même que :
avertissement : (Si vous le retirez ou si vous le clonez dans un autre dossier avec votre version actuelle de l core.autocrlf
configuration,) LF sera remplacé par CRLF
Le fichier aura ses fins de lignes originales dans votre répertoire de travail (actuel).
Comme mentionné dans git-for-windows/git
numéro 1242 :
Je pense toujours que ce message est confus, le message pourrait être étendu pour inclure une meilleure explication du problème, par exemple : "LF sera remplacé par CRLF en file.json
après avoir supprimé le fichier et l'avoir vérifié à nouveau".
Remarque : dans Git 2.19 (septembre 2018), lorsque vous utilisez la fonction core.autocrlf
, le faux "LF sera remplacé par CRLF" est maintenant supprimé. .
Comme quaylar à juste titre commentaires s'il y a une conversion sur l'engagement, c'est pour LF
seulement.
Cet avertissement spécifique " LF will be replaced by CRLF
"vient de 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);
Il est appelé par convert.c#crlf_to_git()
lui-même appelé par convert.c#convert_to_git()
lui-même appelé par convert.c#renormalize_buffer()
.
Et cette dernière renormalize_buffer()
n'est appelé que par merge-recursive.c#blob_unchanged()
.
Donc je soupçonne que cette conversion se fait sur un git commit
seulement si ce commit fait partie d'un processus de fusion.
Note : avec Git 2.17 (Q2 2018), un nettoyage de code ajoute quelques explications.
Voir commettre 8462ff4 (13 janvier 2018) par Torsten Bögershausen ( tboegi
) .
(fusionné par Junio C Hamano -- gitster
-- sur commit 9bc89b1 , 13 février 2018)
convert_to_git() : safe_crlf/checksafe devient int conv_flags
Lors de l'appel convert_to_git()
le checksafe
a défini ce que doit se produire si la conversion EOL ( CRLF --> LF --> CRLF
) ne fait pas ne fait pas l'aller-retour proprement.
En outre, elle a également défini si les fins de ligne devaient être renormalisées ( CRLF --> LF
) ou conservés tels quels.
checksafe était un safe_crlf
avec ces valeurs :
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
Notez qu'une régression introduite dans 8462ff4 (" convert_to_git()
: safe_crlf/checksafe
devient int conv_flags
", 2018-01-13, Git 2.17.0) de retour dans le cycle Git 2.17 provoqué autocrlf
réécrit pour produire un message d'avertissement malgré le réglage safecrlf=false
.
Voir commettre 6cb0912 (04 juin 2018) par Anthony Sottile ( asottile
) .
(fusionné par Junio C Hamano -- gitster
-- sur commettre 8063ff9 , 28 juin 2018)