Marcin Biegała

2 minute read

Mam taką wadę, że generalnie lubię porządek. Lubię jak wszystko ma swoje miejsce i wiem gdzie tego szukać.
Podobnie mam z kodem w repozytorium, nie lubię tam bałaganu. Dlatego też jedną z praktyk, które stosuje już od dawna jest wpisywanie identyfikatora zadania w treść ‘commit message’.
Polecam takie podejście, ponieważ bardzo ułatwia odbudowanie kontekstu całej zmiany po jakimś czasie (szybko znajdziemy odpowiednie zadanie czy historyjkę użytkownika, sprawdzimy co było źródłem zmiany itp. itd.).

I teraz pewnie się zastanawiacie, co to ma wspólnego z GITem ? Otóż każdy system zarządzania zadaniami, czy to Mantis, czy to JIRA, czy VersionOne, ma jakiś swój schemat nadawania identyfikatorów zadań. W swoich projektach często wykorzystuję

Redmine do zarządzania bug’ami i zadaniami. Ten jako identyfikatorów używa liczb całkowitych, moje commity rozpoczynają się wiec od np:
#297:..
#457:….

Jeśli wciąż nie widzicie nadchodzących problemów, to przypomnę że domyślnym znakiem komentarza dla GIT jest ‘#’ :)
Aplikacje do GIT z których korzystałem (typu TortoiseGIT np.) radzą sobie z tym problemem i bez skrępowania możemy zaczynać nasze opisy od #. Gorzej jeśli tak jak ja wolicie konsolę. Zwykłe git commit  które otwiera nam domyślny edytor do wpisania opisu zmian już stawia problemy i nie przyjmuje wiadomości zaczynających się od #.
To natomiast da się dość łatwo ominąć stosując przełącznik -m:

git commit -m "#234: Fixing null pointer exception"

Ale takie podejście odrobinę nas ogranicza i utrudnia wprowadzanie dłuższych opisów zawierających wiele linii.

Okazuje się, że GIT od wersji 1.8.2 zawiera pewne udogodnienie, które rozwiązuje nam powyższy problem: parametr core.commentchar

Pokazuję i objaśniam.
Wersja domyślna:

#234: Fixing null pointer exception 

# Please enter the commit message for your changes. Lines starting 
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master 
# 
# Initial commit 
# 
# Changes to be committed: 
# new file: test.txt 
#

Zmieniamy wspomniane ustawienie: git config core.commentchar ~

I voila:

#234: Fixing null pointer exception 

~ Please enter the commit message for your changes. Lines starting 
~ with '~' will be ignored, and an empty message aborts the commit.
~ On branch master 
~ 
~ Initial commit 
~ 
~ Changes to be committed: 
~ new file: test.txt 
~

Możemy już bezproblemu korzystać z # w naszych opisach commitów nie wychodząc z konsoli.

I nastał ład i porządek!

 

comments powered by Disqus