Czy haki git są wypychane do pilota, gdy „git push”?

96

Jeśli utworzę nowy skrypt przechwytujący w moim repozytorium lokalnym w repo / .git / hooks / post-commit, a następnie uruchomię polecenie „git push”, to czy punkty zaczepienia zostaną przesłane do pilota? Czy wtedy, gdy inni programiści uruchomią „git pull” z tego samego źródła, otrzymają moje nowe hooki?

slacy
źródło
3
Być może ta pomoc stackoverflow.com/questions/3462955/…
René Höhle
Powiązane (z bardzo przydatnymi odpowiedziami): Czy można zarządzać skryptami przechwytującymi Git razem z repozytorium?
Marc 2377

Odpowiedzi:

82

Nie. Hooki są przypisane do repozytorium i nigdy nie są wypychane. Podobnie, konfiguracja repozytorium również nie jest przekazywana, nie ma też niczego w niej .git/infoani wielu innych rzeczy.

Wypychanie i ściąganie wymienia tylko gałęzie / tagi i obiekty zatwierdzeń (i wszystko, co można osiągnąć z zatwierdzenia, np. Drzewa, bloby).

Lily Ballard
źródło
14
Czy istnieje sposób na umieszczenie haczyków w środku i pociągnięcie ich do każdego klonu i zastosowanie.
f1wade
4
@ f1wade Możesz dodać .githookskatalog, który będzie kontrolowany przez wersję, a następnie albo sym-link, albo utworzysz skrypty przechwytujące opakowanie od wewnątrz .git. Klonowanie nie będzie automatycznie podłączane, .githooksale po podłączeniu możesz wypychać i pobierać nowe wersje skryptów przechwytujących.
Philip Couling
48

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

Zapoznaj się z dokumentacją, aby uzyskać listę prostych punktów zaczepienia po stronie klienta i po stronie serwera.

Jeśli chcesz włączyć kilka punktów zaczepienia dla wszystkich klientów, którzy klonują lub pobierają z danego repozytorium, musisz dodać punkty zaczepienia do swojej bazy kodu, a następnie utworzyć własny skrypt, aby skopiować je do lub utworzyć łącze do nich repo/.git/hooks/.

Marco Leogrande
źródło
4
ale jak wywoływany jest skrypt kopiowania?
Adam Johns
6
@AdamJohns Jest wywoływany przez użytkownika / programistę, prawdopodobnie w formie pliku setup.shuruchamianego przez programistę podczas pierwszego klonowania repozytorium. Następnie aktualizacje punktów zaczepienia mogą następować automatycznie, na przykład poprzez posiadanie punktu zaczepienia, który ponownie uruchamia skrypt aktualizujący je po każdym ściągnięciu. Nie musisz więc polegać na programiście, aby zrobił to sam.
cm92
5

Niestety nie, ale od git 2.9 możesz umieścić je w folderze .githooks (jak wspominali inni) i uruchomić:

git config --local core.hooksPath .githooks/

Nie ma więc potrzeby używania linków symbolicznych ani kopiowania plików.

Marco Medrano
źródło