Mein Lieblings-Git-Commit (2019)
(dhwthompson.com)Mein Lieblings-Git-Commit
- Die Bedeutung von Git-Commit-Messages wird hervorgehoben; sie gelten als eines der mächtigsten Werkzeuge, um eine Codebasis zu dokumentieren.
- Als Beispiel wird der von Entwickler Dan Carley verfasste Commit "Convert template to US-ASCII to fix error" herangezogen, um zu erklären, warum.
- Auf Grundlage von Erfahrungen beim GDS (Government Digital Service) wird erklärt, dass einer der Vorteile des öffentlichen Codens darin besteht, solche Beispiele auch außerhalb der eigenen Organisation teilen zu können.
Warum dieser Commit gut ist
- Das Verhältnis zwischen Commit-Message und Codeänderung ist zwar amüsant, aber das ist nicht der Grund, warum er als teilenswert gilt.
- In einer anderen Organisation oder von anderen Entwicklerinnen und Entwicklern hätte diese Commit-Message einfach als
change whitespaceoderfix bugzusammengefasst werden können. - Stattdessen hat Dan sich die Zeit genommen, eine wirklich nützliche Commit-Message für die Menschen um ihn herum zu verfassen.
Er erklärt den Grund für die Änderung
- Die besten Commit-Messages erklären nicht nur, was geändert wurde, sondern auch, warum es geändert wurde.
- In diesem Commit wird ausführlich erklärt, warum ein eingeführter Test, der den Inhalt von
/etc/nginx/router_routes.confabgleichen sollte, beim Ausführen mitbundle exec rakemit dem FehlerArgumentError: invalid byte sequence in US-ASCIIscheiterte. - Solche Informationen sind für die Dokumentation äußerst wertvoll und gehen leicht verloren, wenn Menschen den ursprünglichen Kontext vergessen, in andere Teams wechseln oder die Organisation verlassen.
Er ist durchsuchbar
- Im ersten Teil der Commit-Message steht die Fehlermeldung, die die Änderung ausgelöst hat. So kann jede Person in der Codebasis
git log --grep "invalid byte sequence"ausführen oder die Commit-Suche auf GitHub verwenden, um nach diesem Fehler zu suchen. - Tatsächlich konnten mehrere Personen nach diesem Problem suchen und herausfinden, wer es zuvor entdeckt hatte und wie damit umgegangen wurde.
Er erzählt eine Geschichte
- Die Commit-Message enthält Details dazu, wie sich das Problem gezeigt hat, wie die Untersuchung verlief und wie die Lösung zustande kam.
- Commit-Messages eignen sich hervorragend dafür, nicht ein bestimmtes File, eine Funktion oder eine Codezeile zu dokumentieren, sondern zusätzliche Informationen über den Weg festzuhalten, den die Codebasis genommen hat.
Er macht alle ein bisschen schlauer
- Dass Dan die in jedem Schritt ausgeführten Befehle dokumentiert hat, kann eine leichtgewichtige Methode sein, Wissen im Team zu teilen.
- Wer diese Commit-Message liest, kann dabei einige nützliche Tipps zum Unix-Toolset lernen.
- Sowohl Menschen, die diese Änderung reviewen, als auch Personen, die diesen Commit später finden, können daraus etwas mitnehmen.
Er baut Mitgefühl und Vertrauen auf
- Der letzte Absatz fügt einen menschlichen Kontext hinzu.
- Beim Lesen kann man Dans Frust darüber spüren, dass er eine Stunde damit verbracht hat, einen kniffligen Bug zu verfolgen, ebenso wie die Zufriedenheit darüber, ihn gelöst zu haben.
- Solche Commit-Messages helfen dabei, sich daran zu erinnern, dass hinter jeder Änderung ein Mensch steht, der versucht hat, die bestmögliche Entscheidung zu treffen.
Die Bedeutung guter Commits
- Dieses Beispiel ist ein Extremfall, und es wird nicht erwartet, dass jeder Commit dieses Maß an Detailtiefe hat.
- Dennoch ist es ein hervorragendes Beispiel dafür, den Kontext hinter einer Änderung zu erklären, anderen beim Lernen zu helfen und zum kollektiven mentalen Modell des Teams von der Codebasis beizutragen.
- Wer mehr über die Vorteile guter Commit-Messages und über Werkzeuge erfahren möchte, die dabei helfen, sie leichter zu strukturieren, dem seien Joel Chippindales "Telling stories through your commits" und Tekin Süleymans "A branch in time" empfohlen.
GN⁺-Meinung
- Dieser Artikel betont die Bedeutung von Git-Commit-Messages und zeigt, wie mächtig sie als Werkzeug sein können, um die Geschichte einer Codebasis zu dokumentieren und Wissen zu teilen.
- Dan Carleys Commit-Message ist in vielerlei Hinsicht ein vorbildliches Beispiel: Begründung der Änderung, Durchsuchbarkeit, Erzählen einer Geschichte, Wissensaustausch sowie der Aufbau von Mitgefühl und Vertrauen.
- Wenn Entwicklerinnen und Entwickler verstehen, wie wichtig gute Commit-Messages sind, und dieses Wissen in die Praxis umsetzen, können sie bessere Zusammenarbeit und Wartbarkeit des Codes erreichen, was wiederum zur Produktivität und Effizienz des gesamten Teams beiträgt.
1 Kommentare
Hacker-News-Kommentare
Meinung des GitHub-Mitgründers:
git blamedie zugehörige Commit-Message zu finden.Die Bedeutung von Commit-Messages bei konkreten Problemen:
Persönliche Gefühle zu Commit-Messages:
Strategie für die erste Zeile einer Commit-Message:
git logist die erste Zeile am wichtigsten.Die Schwierigkeit, Commit-Messages zu ändern:
.md-Dateien, Wikis oder Confluence lassen sich leicht bearbeiten.Die Bedeutung detaillierter Erklärungen bei kleinen Commits:
Grenzen von Commit-Messages und Probleme mit Tools:
Die Bedeutung von Commit-Hygiene gegenüber Commit-Messages:
Kritik an Auto-Squash und Rebase: