Keeping a changelog and tagging the releases serve various purposes
It's easy to identify the differences between versions (e.g. Production vs Staging) so everyone is aware of what is running at a server just looking at the CHANGELOG.md
Sometimes the product team may not be fully aware of what are we deploying or what the differences are between what is deployed vs what we are testing. The CHANGELOG.md will be easier to understand than checking commit messages. Commit messages are much more technical oriented and written for developers instead of customers/managers.
All the team will be much more aware of what are we deploying if we have a single document with a section explaining it. Specially if a release involves merging several branches (which is not unusual)
- When branching out, edit the CHANGELOG.md and add an
"Unreleased"
section on top - The section will have subsections (in needed) for
- Added
- Changed
- Deprecated
- Removed
- Fixed
- Security
- Add the appropriate entries on the corresponding subsection
- When merging to master (or the destination branch) we will end up with one Unreleased section with one or many subentries
- Choose an appropriate tag using
v#{version}.#{minor_version}.#{patch}
- Rename the Unreleased section with the version number and date
- Commit the change
- Tag the commit
- Deploy
NOTE: See Keepaachangelog for more information