Opisuj merge!

Changelog jest ważny. Changelog jest liniowy. Historia gita nie jest liniowa, ale może być dzięki przełącznikow git log --first-parent. Dzięki niemu nie zobaczymy wszystkich malutkich commitów wrzucanych na merge’owanego brancha, a jedynie sam merge commit. Dlatego właśnie ważne jest, żeby opisywać w nim ogół wprowadzanych zmian, a nie zostawiać jedynie standardowe “Merge branch ‘feat’ into ‘master’”.

Bardzo to ułatwia późniejsze generowanie changeloga. Przykładowo, mój najnowszy wynalazek pokaże i ładnie sformatuje opis wszystkich zmian wprowadzonych od czasu ostatniego taga:

#!/bin/sh

LAST_TAG=`git describe --tags --abbrev=0`
echo "Changes since $LAST_TAG:"
echo ""
git log --first-parent --pretty="format:* %w(0,0,2)%B" ${LAST_TAG}...HEAD | dos2unix | sed -e '/^  See merge request ![0-9]\+.*$/d' -e 's/^  $//' | cat -s