Comment de fin de ligne des conversions de travailler avec git-core.autocrlf entre les différents systèmes d'exploitation

J'ai lu beaucoup de différentes questions et réponses sur le Débordement de la Pile ainsi que git de la documentation sur la façon dont le de base.autocrlf paramètre fonctionne.

C'est ma compréhension de ce que j'ai lu:

Unix et Mac OSX (pré-OSX utilise CR) les clients utilisent LF fins de ligne.

Les clients Windows utiliser CRLF les fins de ligne.

Quand le noyau.autocrlf est définie sur true, le client, le dépôt git stocke toujours les fichiers dans la FL de fin de ligne format et les fins de ligne dans les fichiers sur le client sont convertis en arrière et en avant sur départ /de s'engager pour les clients (c'est à dire Windows) que l'utilisation non-LF fins de ligne, quel que soit le format de fins de ligne fichiers sont sur le client (ce n'est pas d'accord avec Tim Clem définition - voir la mise à jour ci-dessous).

Ici est une matrice qui tente de document de la même façon pour le "entrée" et "faux" paramètres de base.autocrlf avec des points d'interrogation là où je ne suis pas sûr de fin de ligne de conversion de comportement.

Mes questions sont:

  1. Quelle devrait être la question de la marque?
  2. Est cette matrice correct pour le "non de points d'interrogation"?

Je vais mettre à jour les points d'interrogation à partir des réponses que le consensus semble être formée.

 de base.autocrlf valeur 
vrai faux entrée 
---------------------------------------------------------- 
s'engager | convertir ? ? 
nouveau | à la FL (convertir à la FL?) (pas de conversion?) 

s'engager | convertir ? pas de 
existant | LF (convertir à la FL?) conversion 

checkout | convertir ? pas de 
existant | CRLF (pas de conversion?) conversion 

Je ne suis pas vraiment à la recherche d'avis sur les avantages et les inconvénients des différents paramètres. Je suis juste à la recherche de données qui met en lumière le fait de s'attendre à git pour fonctionner avec chacun des trois paramètres.

--

Mise à jour 04/17/2012: Après la lecture de l'article de Tim Clem lié par JJD dans les commentaires, j'ai modifié certaines des valeurs de "l'inconnu" les valeurs dans le tableau ci-dessus, ainsi que l'évolution des "checkout actuel | vrai pour convertir à CRLF au lieu de les convertir en clients". Voici les définitions qu'il donne, et qui sont de plus en plus clair que tout ce que j'ai vu ailleurs:

de base.autocrlf = false

C'est la valeur par défaut, mais la plupart des gens sont encouragés à modifier cette
immédiatement. Le résultat de l'utilisation de faux, c'est que Git n'a pas toujours mess
avec des fins de ligne dans votre fichier. Vous pouvez vérifier dans les fichiers avec LF ou CRLF
ou CR ou certaines mélange aléatoire de ces trois-là et Git ne se soucie pas. Cette
peut rendre les comparaisons plus difficiles à lire et fusionne en plus difficile. La plupart des gens
travailler dans un monde Unix/Linux utiliser cette valeur parce qu'ils n'ont pas
CRLF problèmes et ils n'ont pas besoin de Git pour faire du travail supplémentaire à chaque fois que
les fichiers sont écrits à l'objet de base de données ou par écrit dans le
répertoire de travail.

de base.autocrlf = true

Cela signifie que Git va traiter tous les fichiers texte et assurez-vous que
CRLF est remplacé par LF lors de l'écriture de ce fichier dans la base de données d'objets
et tourner tous les LF de retour dans CRLF lors de l'écriture dans le travail
répertoire. C'est le réglage recommandé sur Windows parce que c'
veille à ce que votre espace de stockage peut être utilisé sur d'autres plateformes
en conservant CRLF dans votre répertoire de travail.

de base.autocrlf = entrée

Cela signifie que Git va traiter tous les fichiers texte et assurez-vous que
CRLF est remplacé par LF lors de l'écriture de ce fichier à l'objet
la base de données. Il ne sera pas, cependant, faire l'inverse. Lorsque vous lisez des fichiers
de retour de l'objet de base de données et de les écrire dans le travail
répertoire qu'ils ont encore de l'Epa pour désigner la fin de la ligne. Cette
paramètre est généralement utilisé sur les systèmes Unix/Linux/OS X afin d'empêcher CRLFs de
être écrite dans le référentiel. L'idée étant que si vous avez collé
code à partir d'un navigateur web et accidentellement obtenu CRLFs dans l'un de vos
fichiers, Git assurez-vous qu'ils ont été remplacés par de l'Epa quand vous avez écrit
à l'objet de base de données.

Tim article est excellent, la seule chose à laquelle je pense qui manque, c'est qu'il suppose que le référentiel est en LF format, ce qui n'est pas nécessairement vrai, surtout pour Windows uniquement des projets.

Comparant Tim est l'article le plus voté de réponse à ce jour par jmlane montre parfait accord sur le vrai et les paramètres d'entrée et de désaccord sur le paramètre false.

  • En gardant autocrlf false semble donc plus facile 😉 stackoverflow.com/questions/2333424/...
  • J'ai lu cela et je pense que je le comprends, mais je n'ai pas nécessairement de faire le choix. Je travaille avec des dépôts git que je ne contrôle pas, qui nécessitent de définir la valeur d'une certaine manière.
  • et, en fonction sur le serveur Git version, les règles sur la fin de vie et autocrlf sont sur le point de changer dans les prochaines 1.7.2! Voir article.gmane.org/gmane.linux.kernel/1007412
  • Ne serait-il pas agréable si Windows normalisée à LF trop? Le Mac utilisé pour être CR (avant v10), mais est maintenant normalisée à LF.
  • J'ai besoin d'ajouter un lien vers l'excellent article de Timothy Clem - merci de lire l'Esprit à la Fin de Votre Ligne.
  • Scénario: je suis un split Linux/Windows développeur. Je n'utilise que des éditeurs de texte qui permet de reconnaître les deux types de fins de ligne (IE. vim, eclipse). J'ai seulement besoin (envie) de travailler avec les fichiers se terminant par LF. J'ai actuellement de base.autocrlf=jeu de données d'entrée dans mon global git config. Suis-je bien aller? J'aurai jamais un conflit?
  • que le lien de l'article est maintenant mort, mais je suppose que la viande c'est dans la réponse ci-dessus, mais peut-être un lien permanent pourrait être trouvé?
  • Le Internet Archive passe autrefois stockés version de l'article de Timothy Clem.