Zeilenumbrüche – Eclipse, Subversion und Windows

Unter Windows kann es unter Umständen zu Problemen mit den Zeilenumbrüchen in Dateien kommen, wenn man diese per Subversion in ein Repository committen will, und der Zeilenumbruch nicht Windows typisch CR-LF (bzw. “\r\n”) sein soll, sondern Unix typisch nur durch einen Zeilenvorschub (LF, bzw. “\n”) dargestellt werden soll (z.B. aufgrund vorgegebener Coding Guidelines).

Hierzu ist es notwendig, die Auto Properties von SVN so einzustellen, dass der gewünschte Zeilenumbruch erzeugt wird. Meistens wird für die auto-props in etwa folgendes angegeben:

[miscellany]
enable-auto-props = yes

[auto-props]
*.php = svn:eol-style=native;svn:keywords=Id Author Date Revision URL

Die Zuweisung der SVN Property eol-style=native bewirkt aber, dass der Zeilenumbruch beim Commit immer auf den natürlichen Zeilenumbruch des Betriebssystem des Clients umgestellt wird – unter Windows eben CRLF – egal, wie man den Zeilenumbruch in Eclipse (oder beliebigem Editor) eingestellt hat.

Damit nun die Dateien im Repository nur mit einem LF als Zeilenumbruch gespeichert werden geht man wie folgt vor:

  • In Eclipse:
    • “Window”->”Preferences” öffnen
    • Unter “General”->”Workspace” den Wert für “New text file delimiter” auf “Other: Unix” einstellen.
  • Für Subclipse:
    • Die Datei “C:\Users\%USERNAME%\AppData\Roaming\Subversion\config” öffnen
    • Im Abschnitt “[auto-props]” den eol-style auf LF einstellen:

      [auto-props]
      *.php = svn:eol-style=LF;svn:keywords=Id Author Date Revision URL

Damit werden alle neu erstellten Dateien mit LF als Zeilenumbruch in das Repository eingecheckt. Da die Property eol-style nur beim ersten Commit einer Datei gesetzt wird, muss diese Eigenschaft für bereits vorhandene Dateien manuell geändert werden, z.B. in Eclipse:

  • Datei beispielsweise im PHP-Explorer markieren
  • Dann mittels Rechtsklick auf die Datei: “Team”->”Show Properties” den Properties View für die Datei öffnen
  • Im soeben geöffneten Properties View Rechtsklick auf die Zeile mit dem Namen “svn:eof-style” und “Modify Property” auswählen
  • Im Feld “Enter a text property” den Wert “LF” eintragen und das Dialogfenster schließen.

Alternativ kann man auch die Property für ein ganzes Eclipse Projekt ändern:

  • Rechtsklick auf den Projektfolder: “Team”->”Set Property” auswählen
  • Im sich öffnenden Dialogfeld unter “Property name” den Wert “svn:eof-style” und unter “Enter a text property” wie bereits oben beschrieben den Wert “LF” eintragen und das Dialogfenster schließen

Anschließend muss die Änderung der Properties nur noch committed werden.