2010-01-12 11 views
25

Używamy niestandardowo napisanych haczyków Git w naszym projekcie.Zarządzanie hakami Git

Haczyki są przechowywane w repozytorium projektu, a gdy się zmieniają, aby uzyskać nową wersję, każdy użytkownik musi skopiować je ręcznie w swoim katalogu .git/hooks. Jest to dość niewygodne.

Jednym ze sposobów na ulepszenie tego jest .git/hooks dowiązanie symboliczne do worktree. Oznaczałoby to jednak, że każda gałąź (nawet lokalne gałęzie funkcji użytkownika) powinna mieć najnowszą wersję hooków. To też nie jest wygodne.

Jak rozwiązać problem?

Odpowiedz

12

Zachowaj oddzielne repozytorium swoich haków i dowiązanie symboliczne do tego.

Zgadzam się, byłoby miło, gdyby Git miał wbudowany mechanizm do propagowania skryptów hooków, ale tak nie jest.

+1

Jest to oczywiście opcja, ale jest to jeszcze jedno repozytorium do aktualizacji rano ... Dla każdego programisty. Chyba potrzebuję trochę więcej automatyzacji ... –

0

Zrobiliśmy .git/hooks dowiązanie symboliczne do drzewa roboczego.

Dla tych rzadkich okazjach, kiedy ktoś musi popełnić pliki haki odrzuci, używamy git commit --no-verify

+0

To git commit --no-verify jest niebezpieczne. Trudno jest dokonać ponownego wyboru, gdy masz złe zatwierdzenia. –

+1

@Alexander, git rebase również wykona flagę --no-verify. –

+0

Dzięki, tęskniłem za tym. Wciąż ... hack. :-) –

2

Można zrobić .git katalogów repozytorium git repozytorium, a tylko dodać haczyki i inne config do niego, dodając objects, refs itp katalogów i plików, takich jak index jego .gitignore. Nie tylko, ale możesz ustawić hak po otrzymaniu, aby zaktualizować metarepo z jego pochodzenia. Gdy już skonfigurujesz konfigurację początkową, możesz pobrać aktualizacje bez żadnego dodatkowego wysiłku.

Opracowuję szczegóły tego, jak to, co powinno się znaleźć na liście ignorowanych; Wyniki są przechowywane w oddziałach this repo.