Ich habe viele verschiedene Fragen und Antworten zum Stapelüberlauf sowie eine Git- Dokumentation zur Funktionsweise der Einstellung core.autocrlf gelesen .
Dies ist mein Verständnis von dem, was ich gelesen habe:
Unix- und Mac OSX-Clients (Pre-OSX verwendet CR) verwenden LF-Zeilenenden.
Windows-Clients verwenden CRLF-Zeilenenden.
Wenn core.autocrlf auf dem Client auf true gesetzt ist, speichert das Git-Repository Dateien immer im LF-Zeilenendenformat, und Zeilenenden in Dateien auf dem Client werden beim Auschecken / Festschreiben für Clients (dh Windows), die nicht verwenden, hin und her konvertiert -LF-Zeilenenden, unabhängig vom Format der Zeilenendendateien auf dem Client (dies stimmt nicht mit der Definition von Tim Clem überein - siehe Update unten).
Hier ist eine Matrix, die versucht, dasselbe für die Einstellungen 'input' und 'false' von core.autocrlf mit Fragezeichen zu dokumentieren, bei denen ich mir nicht sicher bin, ob das Konvertierungsverhalten am Zeilenende endet.
Meine Fragen sind:
- Was sollen die Fragezeichen sein?
- Ist diese Matrix für die "Nicht-Fragezeichen" korrekt?
Ich werde die Fragezeichen aus den Antworten aktualisieren, da sich ein Konsens zu bilden scheint.
core.autocrlf Wert true input false -------------------------------------------------- -------- begehen | Konvertieren ? ? neu | in LF (in LF konvertieren?) (keine Konvertierung?) begehen | konvertieren zu ? Nein vorhanden | LF-Konvertierung (in LF konvertieren?) Kasse | konvertieren zu ? Nein vorhanden | CRLF-Konvertierung (keine Konvertierung?)
Ich bin nicht wirklich auf der Suche nach Meinungen zu den Vor- und Nachteilen der verschiedenen Einstellungen. Ich suche nur nach Daten, die deutlich machen, wie zu erwarten ist, dass Git mit jeder der drei Einstellungen funktioniert.
- -
Update 17.04.2012 : Nachdem ich den Artikel von Tim Clem gelesen habe, der von JJD in den Kommentaren verlinkt wurde, habe ich einige der Werte in den "unbekannten" Werten in der obigen Tabelle geändert und "vorhandene Kasse | true" geändert, um sie zu konvertieren in CRLF anstatt in Client konvertieren ". Hier sind die Definitionen, die er gibt, die klarer sind als alles, was ich anderswo gesehen habe:
core.autocrlf = false
Dies ist die Standardeinstellung, aber die meisten Benutzer werden aufgefordert, dies sofort zu ändern. Das Ergebnis der Verwendung von false ist, dass Git niemals mit Zeilenenden in Ihrer Datei herumspielt. Sie können Dateien mit LF oder CRLF oder CR oder einer zufälligen Mischung dieser drei einchecken, und Git ist das egal. Dies kann das Lesen von Unterschieden erschweren und das Zusammenführen erschweren. Die meisten Leute, die in einer Unix / Linux-Welt arbeiten, verwenden diesen Wert, weil sie keine CRLF-Probleme haben und Git keine zusätzliche Arbeit benötigen, wenn Dateien in die Objektdatenbank geschrieben oder in das Arbeitsverzeichnis geschrieben werden.
core.autocrlf = true
Dies bedeutet, dass Git alle Textdateien verarbeitet und sicherstellt, dass CRLF beim Schreiben dieser Datei in die Objektdatenbank durch LF ersetzt wird, und dass alle LF beim Schreiben in das Arbeitsverzeichnis wieder in CRLF umgewandelt werden. Dies ist die empfohlene Einstellung unter Windows, da dadurch sichergestellt wird, dass Ihr Repository auf anderen Plattformen verwendet werden kann, während CRLF in Ihrem Arbeitsverzeichnis beibehalten wird.
core.autocrlf = Eingabe
Dies bedeutet, dass Git alle Textdateien verarbeitet und sicherstellt, dass CRLF durch LF ersetzt wird, wenn diese Datei in die Objektdatenbank geschrieben wird. Das Gegenteil ist jedoch nicht der Fall. Wenn Sie Dateien wieder aus der Objektdatenbank lesen und in das Arbeitsverzeichnis schreiben, haben sie immer noch LFs, um das Zeilenende zu kennzeichnen. Diese Einstellung wird im Allgemeinen unter Unix / Linux / OS X verwendet, um zu verhindern, dass CRLFs in das Repository geschrieben werden. Die Idee war, dass Git sicherstellen würde, wenn Sie Code aus einem Webbrowser einfügen und versehentlich CRLFs in eine Ihrer Dateien einfügen, dass diese beim Schreiben in die Objektdatenbank durch LFs ersetzt werden.
Tims Artikel ist ausgezeichnet. Ich kann mir nur vorstellen, dass das Repository im LF-Format vorliegt, was nicht unbedingt der Fall ist, insbesondere für Windows-Projekte.
Der Vergleich von Tims Artikel mit der bisher am höchsten bewerteten Antwort von jmlane zeigt eine perfekte Übereinstimmung hinsichtlich der wahren und Eingabeeinstellungen und Uneinigkeit hinsichtlich der falschen Einstellung.
autocrlf
zu falsch scheint so viel einfacher;) stackoverflow.com/questions/2333424/...