Change log from git commits
Git commits aren't the perfect way to communicate change logs, however it gets better each phase.
Phase 1:
Tell developers to add #changelog
in their commit messages, if they want a message to go as a change log.
Release notes post deployment can be generated with the command:
git log prevTag...newTag --no-merges --format=%B --reverse | grep "#changelog"
Ex. git log v4.2.5...v4.2.8 --no-merges --format=%B --reverse| grep "$changelog"
Phase 2:
Branch naming conventions.
bugfix
, hotfix
, feature
followed by appropriate commit messages will generate changelog in standard unix style:
Example
=====
Fixes:
- Fixed an issue with sandwich. It won't need sudo now.
- Removed the bug which paints your face.
- Removed the bug causing blood cancer.
New features:
- You can now talk to dead people, via single click.
- Allows bilocation. You can be sleep and attend classes, at the same time.
- You can now fly to Asgard.
=====
Phase 3:
With git flow in place and some issue-tracker, you should be able to map commits and issues correspondingly. So, if issue-tracker has commit id or commit has issue id, release notes will automatically add it in bug-fix or feature based on the tag applied in issue-tracker. This also helps in emailing the corresponding people who filed the bug, or raised the feature request.
Phase 4:
Add a tool to auto-generate context and add release notes by it's own consolidation. Get a human for reviewing final notes, before publish.
Phase 5:
Read developer's mind and generate automatically. A chip can be inserted in developer's mind and can be activated when (s)he thinks about or works on the project.
While phase 5 is prone to errors and may not be perfect, it works the best.