Jen 9 kroků od lepšího commitu

Dobrý commit řeší vždy jeden ucelený problém

Dvě změny v jednom commitu nadělají více škod než užitku. Je možné, že někdy v budocnosti budete chtít jednu změnu vrátit, ale druhou zachovat. Jeden commit ale obsahuje obě změny. To znamená že budete muset manuálně oddělit jeden commit od druhého, některý z nich zachovat a některý vrátit. Nebylo by rychlejší kdyby jste je rozdělili při vytváření?

Dobrý commit má skvěle padnoucí popisek, který rozkazuje!

První řádek má maximálně 50 znaků, první řádek má maximálně 50 znaků. Ano není to pevná délka, ale první řádek má maximálně 50 znaků. Začíná velkým písmenem a nekončí tečkou - je to nadpis commitu neboli předmět emailu a ten vždycky začínáš velkým písmenem a nekončíš tečkou. Padesát znaků použiváš i kvůli kontrole, že jde o jeden ucelený problém. Více problému nepopíšeš jedním 50 znakovým řádkem. Nebuď liný commit rozdělit!

Nadpis shrnuje commit. Každý Tvůj kolega musí, jen z popisku, pochopit, co daný commit řeší. Ne! Oprava pár chyb není dobrý popisek.

Pro kontrolu. Popisek musí být schopný dokončit tuto větu - If applied, this commit will ...

Dobrý commit musí mít druhý řádek prázdný!

Dobrý commit odpovídá na otázku - Proč?

Každý kolega musí vědět bez přečtení přilepeného issue, proč tento commit vznikl. Odkaz na issue v popisku je v pořádku, ale nesmí nahrazovat text. Za pár týdnů commit stále existovat může, ale Vaše firma mezítím vyměnila issue tracker. V neposlední řadě myslete na kolegy co nemají internet v mobilu a rádi pročítají historii commitů v tramvaji.

Tento odstavec má mít maximálně 72 znaků na řádek.

Dobrý commit se zmiňuje o vedlejších efektech

Kromě těch zřejmých. Samozřejmě je možné vynechat, pokud žádné nemá. Například, že commit zhorší výkon applikace. Že jde pouze o dočasné řešení, které bohužel znepřístupní jiný modul applikace a podobně.

Dobrý commit může odkazovat na související položky

Zprávu ukonči odkazy na související položky. Kompletní adresa je užitečnější než jen číslo issue.

Closes: #3345 - [url]

Partial: #3345 - [url]

Related: #3345 - [url], #4423 - [url]

Dobrý commit není záloha Tvé práce

Verzovací systém není backup sytém. Commit musí být logický celek a musí vždy řešit jeden problém. Verzovací systém není ani emailový klient. Neposílejte si kusy kódu s kolegy přes commity. Rozdělte si práci na nesouvisející problémy a každý řeště svůj.

Dobrý commit není mix bílého a logického

Přidáš mezeru, přidáš prázdný řadek, zalomíš atributy. Nemixuj bílé změny společně s logikou. Je lepší nejdříve opravit bíle změny, pokud je to opravdu nutné. Vytvořit commit. Poté udělat logické změny. Vytvořit další commit. Je složitější hledat logický zásah mezi záplavou bílých změn.

Nevymlouvej se

Ale vždyť to funguje. Ano funguje, ale později přijde nový programátor a kód použije jiným způsobem. Následuje problém a dobře vytvořený commit pomůže. Ale já na tom pracuji sám. Nikdy nepracuješ sám. Za pár týdnů už jsi jiný člověk. Nepamatuješ si, proč jsi se tenkrát vydal tímto směrem. Nemám na to čas. Dobře vytvořený commit později ušetří dvojnásobek Tobě i Tvým kolegům.

 

Commit je obrazem tebe samotného a neměl by jsi jej podcenit. Nabídni kolegům luxus v podobě ušetřeného času.



Referecnce

http://who-t.blogspot.de/2009/12/on-commit-messages.html

https://wiki.openstack.org/wiki/GitCommitMessages

http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html

http://chris.beams.io/posts/git-commit/

http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices

http://www.zdrojak.cz/clanky/commitujte-jako-profik/

 

 

Author

Jiří Otáhal

comments powered by Disqus