464 Stimmen

Warum sollte ich core.autocrlf=true in Git verwenden?

Ich habe ein Git-Repository, das von sowohl Windows als auch OS X aus zugegriffen wird und das bereits einige Dateien mit CRLF-Zeilenumbrüchen enthält. Soweit ich das beurteilen kann, gibt es zwei Möglichkeiten, damit umzugehen:

  1. Setze core.autocrlf überall auf false,

  2. Befolge die Anweisungen hier (auf GitHub's Hilfeseiten wiederholt), um das Repository nur LF-Zeilenumbrüche enthalten zu lassen und setze danach core.autocrlf auf true auf Windows und input auf OS X. Das Problem dabei ist, dass falls ich binäre Dateien im Repository habe, die:

    1. nicht korrekt als binär in der gitattributes-Datei markiert sind, und
    2. sowohl CRLFs als auch LFs enthalten,

    sie beschädigt werden. Es ist möglich, dass mein Repository solche Dateien enthält.

Also warum sollte ich die Umwandlung der Zeilenumbrüche in Git nicht einfach ausschalten? Im Internet gibt es viele vage Warnungen darüber, dass das Ausschalten von core.autocrlf Probleme verursachen kann, aber sehr wenige spezifische; die einzigen, die ich bisher gefunden habe, sind, dass kdiff3 nicht mit CRLF-Zeilenumbrüchen umgehen kann (für mich kein Problem) und dass einige Texteditoren Probleme mit Zeilenumbrüchen haben (ebenfalls kein Problem für mich).

Das Repository ist intern in meinem Unternehmen, und daher muss ich mir keine Gedanken darüber machen, es mit Personen zu teilen, die unterschiedliche autocrlf-Einstellungen oder Zeilenumbruchanforderungen haben.

Gibt es irgendwelche anderen Probleme, wenn ich die Zeilenumbrüche so lasse, wie sie sind und nicht ändere, von denen ich nichts weiß?

4 Stimmen

Würde stackoverflow.com/questions/2333424/… helfen? Es enthält einen Link zu spezifischen Gründen, autocrlf auf false zu lassen.

6 Stimmen

@VonC Danke, aber ich bin bereits in der Lage zu diktieren, dass alle Benutzer im Unternehmen autocrlf auf false setzen und glaube derzeit, dass dies die beste Option ist. Aber ich möchte wissen, ob es Gründe gibt, warum ich das nicht tun sollte, weil ich feststellen kann, dass es viele Leute (z.B. GitHub) gibt, die sagen, dass autocrlf eingestellt werden sollte, aber keine konkreten Gründe dafür angeben.

5 Stimmen

@VonC d. h. Ich suche nicht nach Gründen, um autocrlf auf false zu setzen. Ich suche nach Gründen, um es auf true zu setzen.

0voto

Demwis Punkte 2099

In unserem Projekt haben wir die Notwendigkeit erklärt, autocrlf auf den Wert input einzustellen. Hier ist, warum Sie daran interessiert sein könnten:

  • Ihr Projekt läuft in einer Linux/Unix-Umgebung und die Entwickler schreiben Code in Windows. Während des Pushs wird CRLF automatisch in LF umgewandelt, sodass Sie das Git-Repository einfach auf dem Unix-Server auschecken müssen und alles sofort einsatzbereit ist.
  • Manchmal laden Entwickler Konfigurationen von Windows-Maschinen manuell auf Server hoch mithilfe von WinSCP. Dies führt zu CRLF-Zeilenumbrüchen auf Unix-Maschinen und zu fehlgeschlagenen App-Starts. Der Wert "input" reduziert teilweise die Anzahl solcher Fälle.

Die Probleme, denen wir vor kurzem gegenüberstanden:

  • Wenn die Zeilenenden auf dem Rechner des Entwicklers auf CR (nicht CRLF) eingestellt sind, werden sie während des Pushs nicht in LF umgewandelt und bleiben in CR im GIT-Repository bestehen. Überprüfen Sie die Zeilenenden sorgfältig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X