SVN und Mac OS X und Umlaute
Hat man unter Mac OS X schon einmal ein Subversion Repository ausgecheckt, das Dateien mit Umlauten im Namen enthält kennt man wahrscheinlich das Problem: Es werden scheinbar ohne Grund Dateien als geändert und als unversioniert angezeigt. Es gibt auch erst einmal keine offensichtliche Lösung für das Problem
Das Problem
Mac OS X speichert Umlaute in Dateinamen als sogenannte precomposed characters (auf Deutsch etwa: "zusammengesetzte Buchstaben"). Das bedeutet, dass ein "ü" nicht als einzelner Buchstabe gespeichert wird, sondern als Zusammensetzung aus einem "u" und dem Zeichen für zwei Punkte über dem Buchstabe ("¨"). Das ist an sich völlig in Ordnung und so vorgesehen. Allerdings gibt es Programme (wie Subversion), die beim Vergleich von Dateinamen diesen Umstand nicht berücksichtigen. Für Subversion sind das Zeichen "ü" und das zusammengesetzte Zeichen "ü" aus zwei Zeichen unterschiedliche Buchstaben.
Fügt man mit Windows eine Datei mit Umlauten in ein Subversion Repository hinzu und checked dieses auf OS X aus, sieht das Ergebnis von svn status so aus:
$ svn st
? mytestätest.txt
! mytestätest.txt
Die Lösung
Um den Patch einspielen zu können muss man natürlich erst einmal Homebrew installieren. Wie das geht steht auf der oben verlinkten Seite. Mit den folgenden Schritten kann man Subversion patchen:
- Im Terminal mit brew edit subversion die Subversion-Formel zum anpassen öffnen
- Unterhalb von patch :DATA muss die URL und der Hash des Patches eingetragen werden. Standardmäßig wird unter OS X der Editor VIM verwendet. Mit der Taste i kann man in den Eingabemodus wechseln. Die Datei sieht an dieser Stelle dann so aus:
...
patch :DATA
patch :p0 do
url "https://issues.apache.org/jira/secure/attachment/12763261/7_svn_1.8.x_darwin_unicode_precomp.patch"
sha256 "2eaee628e3161bce4b1697660281cab30f42265369bfa7074ea435e441d543e7"
end
...
- Die Datei speichern und schließen. In VIM drückt man zuerst ESC um den Eingabemodus zu verlassen und gibt dann :x ein und bestätigt mit Enter
- Speichern und Subversion bauen mit brew install --build-from-source subversion
- Terminal schließen und neu öffnen und mit svn --version überprüfen ob Version 1.9.4 oder neuer läuft
Update von Subversion
Mit Homebrew kann man im Terminal mit dem Befehl brew update und dann brew upgrade alle installierten Programme aktualisieren.
Bei brew update öffnet sich bedingt durch die obige Anpassung manchmal der Standardeditor mit einer Merge-Nachtricht. Es muss dann einfach gespeichert und der Editor beendet werden, damit Homebrew das Update beendet. Es handelt sich hier um einen normalen Git-Merge.
Wird eine neue Version von Subversion installiert (z.B. durch brew upgrade), wird automatisch die vorkompilierte Version verwendet. Diese muss dann durch eine selbstkompilierte Version ersetzt werden: brew reinstall --build-from-source subversion. So wird automatisch wieder der Patch eingespielt.
Nun kann man ohne Probleme mit Subversion-Repsitories arbeiten, die Datei mit Umlauten enthalten.
IntelliJ
IntelliJ kann glücklicherweise so eingestellt werden, dass die neue gepatche Version von Subversion verwendet wird. Dazu muss man in den Einstellungen auf die Homebrew-Version von Subversion wechseln (/usr/local/bin/svn):

Jetzt sollte auch IntelliJ mit Umlauten in Repositories umgehen können.
Subversion GUI Tools
Bei fast allen Subversion GUI Tools (z.B. Versions, Cornerstone oder SmartSVN) ist es leider so, dass diese eingebaute Subversion-Clients verwenden. Diese sind in der Regel leider nicht gepatcht (siehe z.B. den FAQ von Cornerstone) und so zeigen diese Programme auch immer Dateien als geändert an, obwohl sich dort nichts geändert hat.