Hallo, ich habe einen virtuellen Debian-Server auf dem ich subversion erfolgreich installiert habe. Der Zugriff auf die Repositories klappt prima!
Da ich zusammen mit Freunden gerade an einem PHP-Projekt arbeite, würde ich gerne, sobald ein SVN Commit gemacht wurde, die aktuellen Dateien in ein Webverzeichnis auschecken, so dass der aktuelle Stand sofort im Internet ersichtlich ist.
Zu diesem Zweck habe ich einen post-commit hook erstellt. Dieser lässt sich auch ausführen. Das Problem ist nur, dass die Dateien dann von dem Benutzer erstellt werden, der gerade den Commit abgeschickt hat.
Beispiel: Wenn ich als Benutzer "bennyn" einen commit mache, dann wird der post-commit hook unter diesem Benutzerkonto ausgeführt, was dazu führt, dass die ausgecheckten Dateien alle "bennyn" (mit Gruppe "bennyn") gehören (neue Dateien sogar mit chmod 0644!).
Problem: Andere SVN-Benutzer können die ausgecheckten Dateien nicht verändern, da Ihnen die Rechte dafür fehlen.
Lösung: Meine Idee war es, alle Benutzer eine gemeinsame Gruppe (namens "svn") zu geben und die ausgecheckten Dateien mit CHMOD 0775 zu erstellen, so dass die Gruppe dafür Schreibrechte hat. Leider funktioniert das nicht.
Der chown-Befehl in meinem hook-Script scheint keine Auswirkung zu haben.
Bei manueller Ausführung wird mir in der Shell "Ändern des Eigentümers von /srv/www/st38/...: Die Operation ist nicht erlaubt." angezeigt. Der Ordner "/srv/www/st38/" gehört dem User "www-data" und der Gruppe "svn". CHMOD ist 0755. Alle darunter liegenden Ordner gehören mir (User "bennyn", Gruppe "bennyn") und haben auch CHMOD 0755.
post-commit Hook-Script:
Infrastuktur:
Das Repository liegt in: /srv/svn/repos/st38
Das Web-Verzeichnis ist: /srv/www/st38
Alle SVN-Benutzer sind in der Gruppe "svn". Der Apache-Webserver (www-data) gehört auch zur Gruppe "svn".
Wir verbinden uns mit dem SVN-Server über SSH mit einem privaten Schlüssel (svn+ssh://...). Passwörter gibt es nicht.
Hat jemand eine Idee, wie ich mein Problem lösen kann?
Viele Grüße
Benny
Da ich zusammen mit Freunden gerade an einem PHP-Projekt arbeite, würde ich gerne, sobald ein SVN Commit gemacht wurde, die aktuellen Dateien in ein Webverzeichnis auschecken, so dass der aktuelle Stand sofort im Internet ersichtlich ist.
Zu diesem Zweck habe ich einen post-commit hook erstellt. Dieser lässt sich auch ausführen. Das Problem ist nur, dass die Dateien dann von dem Benutzer erstellt werden, der gerade den Commit abgeschickt hat.
Beispiel: Wenn ich als Benutzer "bennyn" einen commit mache, dann wird der post-commit hook unter diesem Benutzerkonto ausgeführt, was dazu führt, dass die ausgecheckten Dateien alle "bennyn" (mit Gruppe "bennyn") gehören (neue Dateien sogar mit chmod 0644!).
Problem: Andere SVN-Benutzer können die ausgecheckten Dateien nicht verändern, da Ihnen die Rechte dafür fehlen.
Lösung: Meine Idee war es, alle Benutzer eine gemeinsame Gruppe (namens "svn") zu geben und die ausgecheckten Dateien mit CHMOD 0775 zu erstellen, so dass die Gruppe dafür Schreibrechte hat. Leider funktioniert das nicht.
Der chown-Befehl in meinem hook-Script scheint keine Auswirkung zu haben.
Bei manueller Ausführung wird mir in der Shell "Ändern des Eigentümers von /srv/www/st38/...: Die Operation ist nicht erlaubt." angezeigt. Der Ordner "/srv/www/st38/" gehört dem User "www-data" und der Gruppe "svn". CHMOD ist 0755. Alle darunter liegenden Ordner gehören mir (User "bennyn", Gruppe "bennyn") und haben auch CHMOD 0755.
post-commit Hook-Script:
Code:
REPOS="$1"
REV="$2"
USER=`whoami 2>&1`
DATE=`date +"%d.%m.%Y, %H:%Mh"`
cd /srv/www
svn co file:///srv/svn/repos/st38 --no-auth-cache --non-interactive
chmod -R 775 /srv/www/st38
chown -R www-data:svn /srv/www/st38
echo "$DATE - User \"$USER\" committed Revision \"$REV\"." >> /srv/www/st38/post-commit.log
Infrastuktur:
Das Repository liegt in: /srv/svn/repos/st38
Das Web-Verzeichnis ist: /srv/www/st38
Alle SVN-Benutzer sind in der Gruppe "svn". Der Apache-Webserver (www-data) gehört auch zur Gruppe "svn".
Wir verbinden uns mit dem SVN-Server über SSH mit einem privaten Schlüssel (svn+ssh://...). Passwörter gibt es nicht.
Hat jemand eine Idee, wie ich mein Problem lösen kann?
Viele Grüße
Benny
Last edited by a moderator: