Git pull w środowisku Linux zmienia właściciela plików

12

Dlaczego za każdym razem, gdy uruchamiam a git pullna 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?

PinoyStackOverflower
źródło
1
Czy johnwłaściciel bieżącego katalogu?
user000001
Tak, John jest właścicielem katalogu :)
PinoyStackOverflower 10'14
1
Który użytkownik działa git pull?
cuonglm,
@ Użytkownik rootGouc, jestem zalogowany na naszym serwerze na żywo za pośrednictwem SSH jako użytkownik root :)
PinoyStackOverflower

Odpowiedzi:

11

Kiedy używasz git pull(co jest równoważne git 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-updatehaki (w .git/hookskatalogu), aby automatycznie wywoływać chown john:john . -Rpo scaleniu / ściągnięciu ( zobacz przykład takiego rozwiązania SO ).

Alternatywne rozwiązania to:

  • Uruchom git pulljako użytkownik John zamiast root (co będzie wymagało uprawnień do zapisu dla Johna dla katalogu .git).
  • Utwórz hak, aby wykonać wdrożenie, które albo użyje Johna jako użytkownika, albo wykonaj chown po aktualizacji (więc będziesz musiał zrobić git pullwewnątrz post-receivehaka nagiego repozytorium).
Asenar
źródło
Co jeśli zrobisz git fetchjako root, a następnie git mergejako użytkownik John? Czy John nadal będzie potrzebował uprawnień do zapisu w .gitkatalogu?
Wildcard
Tak, przez większość czasu. git fetchjako root, nowe pliki w .git / objects` mogą mieć root jako właściciel. git mergeponieważ użytkownik John (przez większość czasu) będzie próbował przynajmniej nadpisać .git/indexi .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.
Asenar,