Warum wird git pull
der Eigentümer der Dateien jedes Mal geändert, wenn ich einen auf meinem Live-Server ausführe ? Ich mache weiterhin manuell a chown john:john index.php
.
Was muss ich ändern, damit git pull
der Eigentümer der Dateien automatisch der Eigentümer der Dateien ist oder bleibt , wenn ich eine Änderung vornehme john
?
john
der Besitzer des aktuellen Verzeichnisses?git pull
?Antworten:
Wenn Sie
git pull
(was äquivalent zugit fetch; git merge
) verwenden, aktualisiert git Dateien, ohne den Besitzer zu ändern (git speichert diese Informationen nicht). Wenn jedoch neue Dateien erstellt werden müssen, wird der aktuelle Benutzer als Eigentümer festgelegt.Es gibt verschiedene Lösungen, um dies zu lösen. Am einfachsten ist es wahrscheinlich, einen
post-update
Hook (in Ihrem.git/hooks
Verzeichnis) hinzuzufügen , derchown john:john . -R
nach dem Zusammenführen / Ziehen automatisch aufgerufen wird ( ein Beispiel finden Sie in dieser SO-Lösung ).Alternative Lösungen sind:
git pull
als Benutzer john anstelle von root aus (für das Verzeichnis .git sind Schreibberechtigungen für john erforderlich).git pull
denpost-receive
Hook des Bare Repo verwenden).quelle
git fetch
als root und danngit merge
als user john arbeiten? Braucht John noch Schreibrechte für das.git
Verzeichnis?git fetch
Neue Dateien in .git / objects haben als root möglicherweise root als Eigentümer.git merge
Als Benutzer wird John (meistens) versuchen, mindestens.git/index
und.git/HEAD
(was bei jeder Änderung gelöscht / erstellt werden könnte, nehme ich an) zu überschreiben und einige Dateien in zu schreiben.git/objects/
. + Alle neuen Dateien in Ihrem Arbeitsverzeichnis. Vielleicht gibt es zum Beispiel Ausnahmen beim Schnellvorlauf.