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.

  1. 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.
  2. 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?

  1. Utwórz katalog w domu użytkownika
    mkdir -p ~/.git-templates/hooks
    i skopiuj tam skrypt prepare-commit-msg.
  2. Wykonaj polecenie dla GIT
    git config --global init.templateDir '~/.git-templates'3
  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.