« Mailserver: mail for Host loops back to myself | Startseite | Warnung vor einer kritischen Sicherheitslücke im IE (Internet Explorer) »
Wenn SVN plötzlich streikt
Jockel | 14.01.2010
Wenn Sie Ihr SVN u.a. auch für die automatische Versionsverteilung nutzen (Stichwort “post-commit”) und dieser Dienst plötzlich nicht mehr läuft, nutzen Sie folgende Möglichkeiten für die Analyse bzw. Lösung:
Logging des post-commit hooks
- Öffnen Sie die entsprechende Scriptdatei
Beispiel:
vi /srv/svn/example/hooks/post-commit - Ergänzen Sie die Datei entsprechend diesem Beispiel:
#!/bin/sh
echo `date` " Start SVN post-commit" >> /var/log/svn.log
whoami >> /var/log/svn.log
svn update /srv/htdocs/example --username x --password y >> /var/log/svn.log 2>&1
echo `date` " End SVN post-commit" >> /var/log/svn.log
In diesem Beispiel wird u.a. der Zeitstempel und der Benutzername des ausführenden Benutzers gespeichert - Legen Sie die angegebene Logdatei an:
touch /var/log/svn.log - Setzen Sie die passende Berechtigung:
chmod 777 /var/log/svn.log
Natürlich sollte später die exakte Berechtigung für den richtigen Benutzer gesetzt werden. Für die Analyse ist die komplette Freigabe jedoch besser - Committen Sie eine Änderung in Ihrem System und prüfen Sie anschließend die Logdatei
Beispiel:
Thu Jan 14 21:44:43 CET 2010 Start SVN post commit
wwwrun
U /srv/htdocs/example/test/index.php
Updated to revision 1064.
Thu Jan 14 21:44:44 CET 2010 Ende SVN post commit
Häufiger Fehler bei post-commit Problemen
Sehr häufig finden Sie z.Bsp. die folgende Fehlermeldung in Ihrem Log:
Thu Jan 14 21:43:42 CET 2010 Start SVN post commit
wwwrun
svn: Can't convert string from native encoding to 'UTF-8':
svn: empf?\195?\164nger.bmp
Thu Jan 14 21:43:43 CET 2010 Ende SVN post commit
In diesem Beispiel wurde versucht, eine Datei “empfänger.bmp” im Trunk zu speichern. Aufgrund der Sprachdefinition in “locale”:
LC_CTYPE=de_DE.UTF-8
konnte SVN mit dem Umlaut “ä” nicht viel anfangen und versuchte das Zeichen zu konvertieren. Den dadurch entstandenen Dateinamen konnte das System nicht erkennen.
Lösungsvorschlag 1
- Benennen Sie (im o.a. Beispiel) die Datei um in “empfaenger.bmp”
- Lösen Sie den post-commit Hook manuell aus:
sudo -u wwwrun /srv/svn/example/hooks/post-commit - Das SVN sollte wieder normal funktionieren
Lösungsvorschlag 2
- Führen Sie folgenden Befehl aus:
export LC_CTYPE=en_US.UTF-8 - Überprüfen Sie Ihre “locale” Umgebung:
locale - Nun sollten Sie u.a. den folgenden Eintrag sehen:
LC_CTYPE="en_US.UTF-8"
Kategorie: Allgemeines, Anleitungen, Linux, eclipse, php | Keine Kommentare »