Ich habe ein Bare Repo erstellt @
/srv/repos/test
ich setze den Besitz auf wwwrun:www mit gesetzten SUID+GUID-Bits
chown -R wwwrun:www /srv/repos/hub
chmod ug+s /srv/repos/hub
ls -ald /srv/repos/test
drwsrws---+ 10 wwwrun www 4.0K Mar 7 21:28 /srv/repos/hub/
Ich habe das Repo in ein Webroot geklont und die Besitzverhältnisse geändert,
git clone /srv/repos/hub /srv/www/siteA
chown -R wwwrun:www /srv/www/siteA
der Einfachheit halber definiere ich eine entfernte
cd /srv/www/siteA
git remote add HUB /srv/repos/hub
erstellen Sie dann Post-Commit- und Post-Update-Hooks, um die Dinge synchron zu halten,
vi /srv/www/siteA/.git/hooks/post-commit
#!/bin/sh
git push HUB
vi /srv/repos/hub/hooks/post-update
#!/bin/sh
cd /srv/www/siteA || exit
unset GIT_DIR
git pull HUB master
exec git-update-server-info
als normaler Benutzer checke ich HUB aus
whoami
locuse
cd ~
git clone /srv/repos/hub WORK
ls -ald WORK
drwxr-xr-x 10 locuse users 4.0K Mar 7 21:44 WORK/
eine Änderung vornehmen, committen und pushen,
cd WORK
touch touch_file
ls -al touch_file
-rw-r--r-- 1 locuse users 0 Mar 7 21:44 touch_file
git add -A
git commit -m "add test"
git push
und dann zu überprüfen, ob der Hook ausgelöst und das Update an die Webroot übertragen wurde,
ls -al /srv/www/siteA/touch_file
-rw-rw----+ 1 locuse www 0 Mar 7 21:45 /srv/www/siteA/touch_file
die Datei ist da - wie erwartet.
aber es ist nicht die gewünschte Benutzerzugehörigkeit, nämlich user='locuse' und nicht user='wwwrun'.
Wie kann ich in diesem speziellen Anwendungsfall sicherstellen, dass ich immer automatisch mit INSTEAD landen würde?
ls -al /srv/www/siteA/touch_file
-rw-rw----+ 1 wwwrun www 0 Mar 7 21:45 /srv/www/siteA/touch_file
? d.h. alles wird immer nach /srv/www/siteA verschoben nur als wwwrun:www .
etwas mit einem Haken, nehme ich an?
Ich weiß, ich könnte hinzufügen
chown -R wwwrun:www /srv/www/siteA
zum Post-Commit-Hook, was bei einem kleinen Baum gut funktioniert, aber bei jedem Commit/Update ins Stocken gerät, wenn er groß ist (was er sein wird).
wenn ich vielleicht nur den aktuellen Commit effizient chounten könnte ... ?
0 Stimmen
Bitte schreiben Sie die Lösung in eine Antwort. Zu gegebener Zeit können Sie die Antwort akzeptieren.
0 Stimmen
Zum Zeitpunkt der Bearbeitung war dies nicht möglich, da ich weitere 6 Stunden warten musste ...