Jak automatycznie dodać nazwę brancha jako prefiks w wiadomości commita?
W wielu projektach dla spójności i czytelności zmian w wiadomości commita używany jest prefiks zawierający nazwę brnacha, w której dokonano zmiany. Dzięki czemu Jira ładnie łączy też linki z commitami w ticketach. Jenak zdarza się, że w ferworze walki z błędami i kodem można o tym zapomnieć, przeoczyć. Na szczęście Istnieje rozwiązanie tego problemu – git hooks.
Git Hools to mechanizm wbudowany w system kontroli wersji Git, który umożliwia automatyczne wykonanie określonych skryptów w odpowiedzi na określone zdarzenia związane z repozytorium Git. Zdarzenia te mogą obejmować działania takie jak commit, push, merge i inne.
Aby dodać przedrostek z nazwą gałęzi do każdej wiadomości zatwierdzenia utworzonej w określonym repozytorium, wykonaj poniższe kroki.
- Utwórz plik prepare-commit-msg (bez rozszerzenia) w katalogu repozytorium .git/hooks z następującą zawartością:
Ten skrypt robi kilka rzeczy:- Pobiera nazwę bieżącej gałęzi za pomocą polecenia git symbolic-ref –short HEAD.
- Wychodzi, jeśli nazwa gałęzi to test lub dev (nie musimy dodawać [test] lub [ dev], aby zatwierdzić msg)
- Sprawdza, czy prefiks został już dodany do pliku komunikatu zatwierdzenia.
- Ustawia prefiks jako nazwę gałęzi w nawiasach kwadratowych i dodaje przedrostek na początku pliku komunikatu zatwierdzenia.
- Nadaj odpowiednie uprawnienia do wykonania skryptu
chmod +x .git/hooks/prepare-commit-msg
Teraz każda wiadomość commita będzie automatycznie poprzedzana nazwą bieżącej gałęzi. Gdy użyjesz git commit w VSCode lub w terminalu, zostanie uruchomiony skrypt prepare-commit-msg i doda nazwę brancha do komunikatu commita.
Jak ustawić to globalnie, dla wszystkich repozytoriów?
- Utwórz katalog w domu użytkownika
mkdir -p ~/.git-templates/hooks
i skopiuj tam skrypt prepare-commit-msg. - Wykonaj polecenie dla GIT
git config --global init.templateDir '~/.git-templates'3
- Ponownie zaloguj użytkownika lub zrestartuj system.
Teraz wszystkie nowe i istniejące repozytoria GIT będą używać skryptu prepare-commit-msg z prefiksem zawierającym nazwę brancza.