Dlaczego za każdym razem, gdy uruchamiam a git pull
na moim serwerze na żywo, właściciel plików jest zmieniany? Nadal ręcznie robię chown john:john index.php
.
Co muszę zmienić, aby, gdy to zrobię git pull
, właściciel plików zostanie automatycznie lub pozostanie john
?
john
właściciel bieżącego katalogu?git pull
?Odpowiedzi:
Kiedy używasz
git pull
(co jest równoważnegit fetch; git merge
), git aktualizuje pliki bez zmiany właściciela (git nie przechowuje tych informacji). Ale jeśli zostaną utworzone nowe pliki, bieżący użytkownik zostanie ustawiony jako właściciel.Istnieją różne rozwiązania tego problemu. Prawdopodobnie łatwiej jest dodać
post-update
haki (w.git/hooks
katalogu), aby automatycznie wywoływaćchown john:john . -R
po scaleniu / ściągnięciu ( zobacz przykład takiego rozwiązania SO ).Alternatywne rozwiązania to:
git pull
jako użytkownik John zamiast root (co będzie wymagało uprawnień do zapisu dla Johna dla katalogu .git).git pull
wewnątrzpost-receive
haka nagiego repozytorium).źródło
git fetch
jako root, a następniegit merge
jako użytkownik John? Czy John nadal będzie potrzebował uprawnień do zapisu w.git
katalogu?git fetch
jako root, nowe pliki w .git / objects` mogą mieć root jako właściciel.git merge
ponieważ użytkownik John (przez większość czasu) będzie próbował przynajmniej nadpisać.git/index
i.git/HEAD
(które, jak sądzę, można usunąć / utworzyć przy każdej zmianie), i zapisze niektóre pliki.git/objects/
. + wszelkie nowe pliki w katalogu roboczym. Być może istnieją wyjątki, na przykład podczas szybkiego łączenia do przodu.