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!