Wenn SVN plötzlich streikt

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"

Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

4 × fünf =