Photo by Lachlan Donald on Unsplash
W pracy z Git oraz z Jira (lub innym trackerem zadań) prędzej czy później zachodzi potrzeba aby w treści wiadomości do commita pojawił się numer zadania. Szybciej można namierzyć, które to zadanie i co lepsze otwiera drogę do automatyzacji i integracji różnych narzędzi (czy to “ręcznie” pisząc skrypt czy też przez gotowe wtyczki).
To co chciałem osiągnąć to gdy jestem na branchu feature/TICKET-1234-name-of-the-branch
to do każdej commit message będzie doklejone [TICKET-1234] Adds some super code.
Wiem, że git ma mechanizm hook
-ów, które pozwalają na modyfikowanie różnych zachowań. I jednym z takich hooków jest właśnie commit-msg
.
Szybkie zapytanie do Google i… masa odpowiedzi, które nie działały 😢 Wersje narzędzi zainstalowanych domyślnie na OS X do poprawnego działania wymagają innych flag. Nie jestem jakimś terminalowym guru i też nie zamierzałem nim zostać z tego powodu. Tak więc po odrobinie “karate” oto zwycięska kombinacja:
#!/bin/bash # get current branch branchName=`git rev-parse --abbrev-ref HEAD` # search jira issue id in a pattern such a "feature/ABC-123-description" jiraId=$(echo $branchName | sed -nE 's,[a-z]+/([A-Z]+-[0-9]+)-.+,\1,p') # only prepare commit message if pattern matched and jiraId was found if [[ ! -z $jiraId ]]; then # $1 is the name of the file containing the commit message sed -i.bak -e "1s/^/[$jiraId] /" $1 fi
To co trzeba zrobić to zamienić/dodać do pliku repozytorium/.git/hooks/commit-msg
treść tego skryptu oraz ustawić na nim +x
komendą chmod +x commit-msg
. Dzięki temu skrypt będzie wykonywalny.
Jazda próbna
Do dodawania commit message można użyć narzędzia graficznego:

lub komendy terminala:

Rezultat w obu przypadkach jest taki sam. Commit message został udekorowany odpowiednim przedrostkiem 🙂


Pozdrawiam i szybko kompilującego się kodu życzę 😎