Byłem jedynym podmiotem odpowiedzialnym za projekt TXR i zachowałem szczegółowy dziennik zmian od dość wczesnego etapu projektu. Jest to blisko 11 000 linii i rośnie:
http://www.kylheku.com/cgit/txr/tree/ChangeLog
(Komunikaty zatwierdzania w repozytorium są tylko kopią tego, co znajduje się w dzienniku zmian.)
[Edycja 2016: od połowy 2015 r. Nie utrzymuję już pliku ChangeLog; jednak komunikaty zatwierdzania są zapisywane w formacie zgodnym z konwencjami Git i ChangeLog w tym samym czasie. Ten sam poziom szczegółowości istnieje w sposób, który nie powoduje problemów z scalaniem. Plik ChangeLog można mechanicznie zrekonstruować na podstawie tych komentarzy.]
Tak, więcej niż raz wróciłem do starej wiadomości zatwierdzenia związanej ze zmianą, która coś zepsuła (odkryta za pomocą git bisect
). Wiadomość pomogła mi zrozumieć, co robię.
W dzienniku zmian możesz określić, kiedy po raz pierwszy wprowadzono funkcję, typ, makro lub zmienną globalną, a następnie zmiany dotknęły jej.
Ale główny powód pisania szczegółowych komunikatów zatwierdzania, takich jak te, podczas samodzielnej pracy, jest następujący: podczas wykonywania tej operacji znajdziesz błędy .
Napisanie szczegółowego komunikatu zatwierdzenia ma podobne zalety jak przegląd kodu twojego zatwierdzenia przez kogoś innego. Wartość przeglądu zatwierdzeń nie polega na tym, że ktoś sprawdza Twój kod, ale na tym, że musisz wyjaśnić swoje zmiany innemu programistowi.
Kiedy próbujesz wyjaśnić rzeczy, czasami okazuje się, że nie mają one sensu.
Kolejny powód: możesz złapać się na bezużytecznej zmianie . Pisząc szczegółowy komentarz zatwierdzenia, uchwycisz ogólny widok tego, co robisz, a następnie czasami stajesz przed faktem, że nie jest to dobra zmiana.
Czasami wprowadzałem zmiany, kiedy w trakcie pisania wpisu ChangeLog zdałem sobie sprawę, że będzie to raczej git reset --hard
(wyrzuć te bezużyteczne zmiany) niż git commit -a
.