Ładna wiadomość w git na OS X

  • by
Tools

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ę 😎

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *