J'ai lu de nombreuses questions et réponses sur Stack Overflow ainsi que de la documentation git sur le fonctionnement du paramètre core.autocrlf .
Voici ma compréhension de ce que j'ai lu:
Les clients Unix et Mac OSX (pré-OSX utilise CR) utilisent les terminaisons de ligne LF.
Les clients Windows utilisent des fins de ligne CRLF.
Lorsque core.autocrlf est défini sur true sur le client, le référentiel git stocke toujours les fichiers au format de fin de ligne LF et les fins de ligne dans les fichiers sur le client sont converties dans les deux sens lors de l'extraction / validation pour les clients (c'est-à-dire Windows) qui utilisent non -LF fin de ligne, quel que soit le format des fichiers de fin de ligne sur le client (cela n'est pas conforme à la définition de Tim Clem - voir la mise à jour ci-dessous).
Voici une matrice qui essaie de documenter la même chose pour les paramètres 'input' et 'false' de core.autocrlf avec des points d'interrogation où je ne suis pas sûr du comportement de conversion de fin de ligne.
Mes questions sont:
- Quels devraient être les points d'interrogation?
- Cette matrice est-elle correcte pour les "non-points d'interrogation"?
Je mettrai à jour les points d'interrogation des réponses car un consensus semble se former.
valeur core.autocrlf vrai entrée faux -------------------------------------------------- -------- commettre | convertir? ? nouveau | en LF (convertir en LF?) (pas de conversion?) commettre | convertir en ? non existant | Conversion LF (convertir en LF?) caisse | convertir en ? non existant | Conversion CRLF (pas de conversion?)
Je ne suis pas vraiment à la recherche d'opinions sur les avantages et les inconvénients des différents paramètres. Je cherche juste des données qui indiquent clairement comment attendre que git fonctionne avec chacun des trois paramètres.
-
Mise à jour 17/04/2012 : Après avoir lu l'article de Tim Clem lié par JJD dans les commentaires, j'ai modifié certaines des valeurs dans les valeurs "inconnues" dans le tableau ci-dessus, ainsi que changé "checkout existant | true pour convertir" en CRLF au lieu de convertir en client ". Voici les définitions qu'il donne, qui sont plus claires que tout ce que j'ai vu ailleurs:
core.autocrlf = false
C'est la valeur par défaut, mais la plupart des gens sont encouragés à changer cela immédiatement. Le résultat de l'utilisation de false est que Git ne dérange jamais les fins de ligne de votre fichier. Vous pouvez archiver des fichiers avec LF ou CRLF ou CR ou un mélange aléatoire de ces trois et Git s'en fiche. Cela peut rendre les différences plus difficiles à lire et les fusionner plus difficiles. La plupart des gens travaillant dans un monde Unix / Linux utilisent cette valeur car ils n'ont pas de problèmes CRLF et ils n'ont pas besoin que Git fasse un travail supplémentaire chaque fois que des fichiers sont écrits dans la base de données d'objets ou écrits dans le répertoire de travail.
core.autocrlf = true
Cela signifie que Git traitera tous les fichiers texte et s'assurera que CRLF est remplacé par LF lors de l'écriture de ce fichier dans la base de données d'objets et remettra tous les LF en CRLF lors de l'écriture dans le répertoire de travail. Il s'agit du paramètre recommandé sous Windows car il garantit que votre référentiel peut être utilisé sur d'autres plates-formes tout en conservant CRLF dans votre répertoire de travail.
core.autocrlf = entrée
Cela signifie que Git traitera tous les fichiers texte et s'assurera que CRLF est remplacé par LF lors de l'écriture de ce fichier dans la base de données d'objets. Il ne fera cependant pas l'inverse. Lorsque vous lisez des fichiers de la base de données d'objets et les écrivez dans le répertoire de travail, ils auront toujours des LF pour indiquer la fin de la ligne. Ce paramètre est généralement utilisé sur Unix / Linux / OS X pour empêcher les CRLF d'être écrits dans le référentiel. L'idée étant que si vous colliez du code à partir d'un navigateur Web et introduisiez accidentellement des CRLF dans l'un de vos fichiers, Git s'assurait qu'ils étaient remplacés par des LF lorsque vous écriviez dans la base de données d'objets.
L'article de Tim est excellent, la seule chose à laquelle je pense qu'il manque, c'est qu'il suppose que le référentiel est au format LF, ce qui n'est pas nécessairement vrai, en particulier pour les projets Windows uniquement.
La comparaison de l'article de Tim avec la réponse la plus votée à ce jour par jmlane montre un accord parfait sur les paramètres true et input et un désaccord sur le paramètre false.
autocrlf
à faux semble tellement plus facile;) stackoverflow.com/questions/2333424/…