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?



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).


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/.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.