Napisałem haczyk Git po zatwierdzeniu i działa poprawnie. Chcę jednak dodać ten haczyk, aby zastosować go do wszystkich bieżących (i przyszłych) repozytoriów git, nad którymi pracuję. Próbowałem dodać hook do mojego ~/.git/hooks/
zamiast w katalogu hooks w katalogu projektu, jednak to nie działało.
Czy istnieje sposób tworzenia globalnych haków Git, które będą miały zastosowanie do wszystkich repozytoriów w moim systemie (bez konieczności kopiowania ich do każdego katalogu projektu)? Jeśli nie, jakie byłoby najlepsze rozwiązanie na przyszłość - być może szablon git-init?
Odpowiedzi:
W przypadku git 2.9+ (czerwiec 2016 r.) Wszystko, co możesz zrobić, to:
Zobacz „ zmiana domyślnych haków git ”: zostało to zrobione w celu zarządzania scentralizowanymi hakami.
źródło
/.git/hooks/pre_commit
mogę to wskazać?Począwszy od gita 1.7.1, możesz ustawić init.templatedir w swoim gitconfig, aby powiedzieć gitowi, gdzie szukać szablonów.
Ustaw to w ten sposób:
Następnie nowe repozytoria, które utworzysz lub sklonujesz, użyją tego katalogu do szablonów. Umieść haki, w których chcesz
~/.git_template/hooks
. Istniejące repozytoria można ponownie zainicjować za pomocą odpowiednich szablonów, uruchamiając jegit init
w tym samym katalogu.git
.Dla wersji git starszych niż 1.7.1, bieganie
git init --template ~/.git_template
będzie działać, jeśli jesteś podobny do mnie i nadal chcesz zarządzać.git_template
katalogiem wraz z resztą plików kropek. Możesz także użyć$GIT_TEMPLATE_DIR
środowiska, aby określić,git init
gdzie znajduje się katalog szablonów.źródło
git init
na istniejącym repozytorium go wyciera - nie robi tego , patrz: stackoverflow.com/questions/5149694/…git init
nie zaktualizowało dla mnie haków. Wygląda na to, że nie zastąpi plików, które już tam są. stackoverflow.com/questions/10791486/ . Zamiast tego musisz najpierw usunąć stare pliki haka.Jeśli chcesz je w dowolnym miejscu w systemie (w tym poza użytkownikami), możesz zmodyfikować zawartość zainstalowanego katalogu szablonów - są
$PREFIX/share/git-core/templates/hooks
tam, gdzie$PREFIX
prawdopodobnie/usr/local
lub/usr
.Jeśli chcesz, aby to było tylko dla Ciebie, tak, najprostszą rzeczą byłaby
--template
opcja git-init. Możesz z łatwością zachować osobisty katalog szablonów, który zawiera dowiązania symboliczne z powrotem do zainstalowanej wersji ustawień domyślnych, które chcesz zachować (pojedyncze zaczepy, katalog informacji ...), a następnie własną zawartośćhooks/post-commit
i wszystko, co chcesz dostosować.źródło
git init
ponownie i dodałem nowy hak./Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
mingw64\share\templates\hooks
(lub mingw32 dla 32-bitów)mingw64\share\git-core\templates\hooks
(gfw 2.25)Minimalistyczne podejście polega na utworzeniu
git_hooks/
katalogu w repozytorium w celu śledzenia haczyków, które piszesz dla tego projektu, zwrócenia na niego uwagi przyszłych użytkowników, wspominając o nimREADME
, i polegania na nich, aby zrobili właściwą rzecz po sklonowaniu. Zastanawiałem się nad tym przez jakiś czas i wybrałem podejście przyrostowe. W dół drogi mogę rozważyć użycie narzędzia takiego jak haczyki .źródło