2012-08-31 10 views
51

Jeśli utworzę nowy skrypt przechwytujący w moim lokalnym repozytorium w repo/.git/hooks/post-commit, a następnie uruchomię "git push", czy haki zostaną przekazane do zdalnego? Wtedy, kiedy inni deweloperzy uruchomią "git pull" z tego samego pochodzenia, dostaną moje nowe haki?Czy haki git są popychane do pilota, kiedy "git push"?

+3

Być może ta pomoc http://stackoverflow.com/questions/3462955/putting-git-hooks-into-repository – Stony

+0

Dzięki, to było moje następne pytanie. :) – slacy

Odpowiedz

47

Nie. Haki są przeznaczone dla jednego repozytorium i nigdy nie są naciskane. Podobnie, konfiguracja repozytorium nie jest wypychana, ani nie ma nic w .git/info lub wielu innych rzeczy.

Pchanie i ciągnięcie tylko wymienia gałęzie/znaczniki i obiekty commit (i wszystko, co można uzyskać za pomocą zatwierdzenia, np. Drzewa, obiekty typu blob).

+3

Czy istnieje sposób na umieszczenie haków w centrum i nakłonienie ich do ściągnięcia każdego klona i nałożenie. – f1wade

33

Nie, haki git nie są wypychane ani wyciągane, ponieważ nie są częścią kodu repozytorium.

Proszę odnieść się do the documentation po listę prostych haków po stronie klienta i po stronie serwera.

Jeśli chcesz włączyć niektóre przechwyty dla wszystkich klientów klonujących lub pobierających z danego repozytorium, musisz dodać haki do swojej bazy kodów, a następnie utworzyć własny skrypt, aby je skopiować lub połączyć z nimi od repo/.git/hooks/.

+3

, ale w jaki sposób wywoływany jest skrypt kopiowania? –

+5

@AdamJohns Zostaje wywołana przez użytkownika/programistę, prawdopodobnie w formie "setup.sh", którą uruchamia dev, gdy po raz pierwszy sklonuje repozytorium. Po tym, aktualizacje haków mogą się zdarzyć automatycznie dzięki hakowi, który ponownie uruchamia skrypt aktualizujący je po każdym pociągnięciu, na przykład. Więc nie musisz polegać na programistach, aby zrobić to sam. – cm92