2016-09-05 14 views
8

Mam repozytorium git z pre-commit konfigurowaniu:Git haki: zastosowanie `git config core.hooksPath`

my-repo 
|- .git 
    |- hooks 
     |- pre-commit  # I made this file executable 

aż wszystko działa. Haczyk działa, kiedy zatwierdzam.

=================================

I teraz uruchomić git config core.hooksPath ./git-config/hooks w my-repo.

struktura folderów jest to jedno:

my-repo 
|- .git 
    |- hooks 
|- git-config 
    |- hooks 
     |- pre-commit  # I made this file executable as well 

Co się dzieje:

  • nowy pre-commit skrypt nie działa na popełnić
  • stary pre-commit skrypt nadal działa przy zatwierdzaniu, jeśli pozostawię je w my-repo/.git/hooks
  • z uruchomieniem git config --get core.hooksPath w my-repo wyjściach ./git-config/hooks

Jak mogę uruchomić nowy hak pre-commit na commit?

Oto link do docs I najwyraźniej nie dobrze zrozumieć:
https://git-scm.com/docs/git-config
https://git-scm.com/docs/githooks

+0

Próbuję zaimplementować 'core.hooksPath'. Czy domyślne zaczepy mieszczą się poza Twoimi niestandardowymi haczykami, czy też uruchomisz tylko własne haczyki? – Xerri

+0

@Xerri Opcja 'core.hooksPath' zastępuje domyślną wartość (' ./. Git/hooks'), więc tylko skrypty przechwytujące w podanym folderze zostaną wykryte i uruchomione. –

Odpowiedz

13

Wsparcie core.hooksPath jest new in Git version 2.9, które zostały umieszczone w z commit 867ad08a2610526edb5723804723d371136fc643. Jeśli twoja wersja Git nie ma co najmniej 2.9.0, ustawienie zmiennej hooks-path nie będzie miało żadnego efektu.

+0

Hmmm Nie mogę uwierzyć, że wcześniej tego nie sprawdziłem! Tak czy inaczej, to było to, zaktualizowałem git i działa idealnie. Dzięki ! –

+0

@torek Mam git 2.9.3, ale to nie działa – onmyway133

+0

@ onmyway133: haczyki to rodzaj bólu, ponieważ istnieje około 40 sposobów na * zapobieganie ich działaniu, a Git nie mówi absolutnie nic, gdy którykolwiek z nich sposoby zapobiegania. Musisz więc wyliczyć wszystkie sposoby, w jakie haki się nie sprawdzają, sprawdzając po kolei: (1) czy Git może to znaleźć? (2) czy jest to plik wykonywalny (chmod + x)? (3) czy * naprawdę * jest wykonywany (w razie potrzeby #! Linia interpretera)? (4) czy naprawdę * jest to plik wykonywalny? (ACL, itp.) ... – torek

Powiązane problemy