Marking versions.
WHAT A TAG IS
A permanent label on a specific commit.
WHAT IT IS FOR
Marking releases.
WHY
So you can return to exactly what was deployed.
WHAT SEMANTIC VERSIONING PROVIDES
A convention where the version number states the nature of the change.
WHAT THE PARTS INDICATE
A breaking change A backward-compatible addition A backward-compatible fix
WHY THAT MATTERS
Consumers can judge whether an upgrade is safe from the number alone.
WHAT TO MAINTAIN
A record of changes per release.
WHAT TO INCLUDE IN IT
What changed, from the perspective of someone using it Anything requiring action on upgrade Anything deprecated or removed
WHAT TO GENERATE
Part of it from commit messages, where the convention supports it.
WHAT TO AUTOMATE
Tagging, building and publishing, on release.
WHAT TO RECORD FOR EVERY DEPLOYMENT
Which commit or tag is running where.
WHY
It is the first question when something is wrong.
WHAT TO NEVER DO
Move a tag that has been published.