Wie kann ich während SVN-Vorgängen alle Zeilenenden in CRLF, LF oder CR konvertieren?

StackOverflow https://stackoverflow.com/questions/15687

  •  08-06-2019
  •  | 
  •  

Frage

Sie sind also alle bereit, ein großes SVN-Commit durchzuführen, und es ist eine Bombe, weil einige Ihrer Dateien inkonsistente Zeilenenden haben.Der lustige Teil ist, dass Sie Tausende von Dateien sehen, die sich über Dutzende von Ordnern unterschiedlicher Tiefe erstrecken.

Was machst du?

War es hilfreich?

Lösung

Ich glaube nicht, dass vorab festlegen Hook kann tatsächlich die Daten ändern, die festgeschrieben werden – er kann ein Festschreiben verbieten, aber ich glaube nicht, dass er die Konvertierung für Sie durchführen kann.

Es hört sich so an, als ob Sie das wollen Eigentum „svn:eol-style“ auf „native“ gesetzt – dadurch werden Zeilenumbrüche automatisch in alles konvertiert, was auf Ihrer Plattform verwendet wird (verwenden Sie „CRLF“, „CR“ oder „LF“, um diese zu erhalten, unabhängig davon, was das Betriebssystem will).

Sie können verwenden Auto-Eigenschaften damit für alle zukünftigen Dateien, die Sie erstellen, diese Eigenschaft festgelegt wird (Auto-Requisiten werden clientseitig gehandhabt, Sie müssten dies also für jeden Benutzer einrichten).

Andere Tipps

Zuerst muss alles aufgeräumt werden.Benutzen Sie Windows oder Unix/Linux/Mac?

Wenn Sie Unix/Linux/Mac verwenden, können Sie Folgendes versuchen:

$ find . -type f -name "*.java" -exec dos2unix {}\;

Das ist, wenn Sie haben dos2unix auf Ihrer Box.Es ist nicht auf meinem Mac oder einem der sechs Linux-Rechner, die wir haben.Scheint, als hätten wir dieses spezielle Paket nicht installiert.Glücklicherweise ist es leicht zu finden.

Seien Sie vorsichtig bei der Verwendung, da Sie keine Binärdateien beschädigen möchten.

Sobald Sie alles aufgeräumt haben, sollten Sie die svn:eol-style Eigentum in Ihren Dateien.Stellen Sie es ein einheimisch checkt die Datei mit dem korrekten Zeilenende für Ihren Computer aus, speichert sie jedoch im Unix-Zeilenendeformat.Die anderen drei Optionen sind „LF“ für Unix, „CRLF“ für Windows und „CR“ für Macs vor Mac OS X.Die meisten Menschen finden, dass „nativ“ am besten funktioniert.Das einzige Problem bei Native besteht darin, dass eine Datei mit gemischten Zeilenenden nicht eingecheckt wird, während dies bei „LF“ und „CRLF“ der Fall ist.

Sobald Sie das getan haben, sollten Sie eine bekommen Pre-Commit-Hook Dadurch können Sie Zeilenenden für bestimmte Dateien erzwingen.Bringen Sie Ihren Entwicklern dann die Verwendung bei Autoeigenschaften.Der Pre-Commit-Hook verhindert jegliche Commits, es sei denn, die Eigenschaft wird in der Datei platziert. Einem Entwickler wird der Commit ein- oder zweimal abgelehnt, und er richtet automatisch automatische Eigenschaften ein.

Füge hinzu ein Pre-Commit-Hook Dadurch wird der Dateiinhalt analysiert und das Munging von CRLF/LF/CR/usw. für Sie durchgeführt, bevor es in SVN geschrieben wird.

Sie können erwägen, einen Befehl wie den von Linux zu verwenden dos2unix für den Umbau.Da es sich um einen Linux-Befehl handelt, ist es einfach, ihn im Batch-Modus mit Skripten usw. zu verwenden.Ich weiß nicht, ob es ein Äquivalent für andere Betriebssysteme gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top