Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
14. Jan 2010
Teaser

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"

Schreibe einen Kommentar

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

vier + 16 =