You are experiencing difficulty in keeping track of which changes have been made to your project.
Add a file to your codebase named Changelog
. Use this to document notable changes to your project.
Avoid referring to external descriptions (e.g., bug reports) because projects often outlast the platforms that host them or the tools used to track
work and defects.
Make sure to separate your log by the different versions of your application. Ideally, the most recent changes are at the top, to avoid people
needing to scroll through a lengthy document to find recent information.
Keep track of at least the following items: deletions
, additions
, changes
. You can add more categories if desired or required.
The following factors support effective application of the practice:
The following factors prevent effective application of the practice:
While the approach brings numerous benefits, it can also lead to several unexpected or undesired outcomes:
To mitigate the potential negative consequences of the approach:
Example of the changelog of version 1.1.1
from keepachangelog.com
.
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.1.1] - 2023-03-05
### Added
- Arabic translation (#444).
- v1.1 French translation.
- v1.1 Dutch translation (#371).
- v1.1 Russian translation (#410).
- v1.1 Japanese translation (#363).
- v1.1 Norwegian Bokmål translation (#383).
- v1.1 "Inconsistent Changes" Turkish translation (#347).
- Default to most recent versions available for each language
- Display count of available translations (26 to date!)
- Centralize all links into `/data/links.json` so they can be updated easily
### Fixed
- Improve French translation (#377).
- Improve id-ID translation (#416).
- Improve Persian translation (#457).
- Improve Russian translation (#408).
- Improve Swedish title (#419).
- Improve zh-CN translation (#359).
- Improve French translation (#357).
- Improve zh-TW translation (#360, #355).
- Improve Spanish (es-ES) translation (#362).
- Fold-out menu in Dutch translation (#371).
- Missing periods at the end of each change (#451).
- Fix missing logo in 1.1 pages
- Display notice when translation isn't for most recent version
- Various broken links, page versions, and indentations.
### Changed
- Upgrade dependencies: Ruby 3.2.1, Middleman, etc.
### Removed
- Unused normalize.css file
- Identical links assigned in each translation file
- Duplicate index file for the english version
## [1.1.0] - 2019-02-15
### Added
- Danish translation (#297).
- Georgian translation from (#337).
- Changelog inconsistency section in Bad Practices.
### Fixed
- Italian translation (#332).
- Indonesian translation (#336).
Here is an example workflow to automatically update your GitHub ReadMe with the contents of your Changelog file.
It looks for the CHANGELOG.md
file in the docs
folder and appends it to the ReadMe file, replacing the existing content between the
<!-- CHANGELOG:START -->
and <!-- CHANGELOG:END -->
tags.
name: <(^v^)> Update README.md with Changelog
jobs:
build:
name:
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v2
- run: sed -i '/<!-- CHANGELOG:START -->/,/<!-- CHANGELOG:END -->/d' README.md
- run: echo '<!-- CHANGELOG:START -->' >> README.md
- run: cat docs/CHANGELOG.md >> README.md
- run: echo '<!-- CHANGELOG:END -->' >> README.md
- name: push
uses: actions-x/commit@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
with:
name: GitHub Actions Autocommitter
files: ./README.md
message: "[GITOPS] updated README with latest changes"