Skip to main content

preparing-release-changelog

Prepare the CHANGELOG.md for a Damus release by running the changelog script, curating the output, and committing the result. Covers prerequisites, known pitfalls (duplicate entries, reverted commits, truncated annotations, wrong version label), and the editing/commit steps.

설치로 이동

소스 정보

저장소
damus-io/damus
최근 소스 활동
2026년 6월 3일 18:51
감지된 SKILL.md 언어
영어
스타
2,141
포크
300

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
preparing-release-changelog
description
Prepare the CHANGELOG.md for a Damus release by running the changelog script, curating the output, and committing the result. Covers prerequisites, known pitfalls (duplicate entries, reverted commits, truncated annotations, wrong version label), and the editing/commit steps.
# Preparing Release Changelog ## Description Prepare the CHANGELOG.md for a Damus release by running the changelog script, curating the output, and committing the result. Covers prerequisites, known pitfalls (duplicate entries, reverted commits, truncated annotations, wrong version label), and the editing/commit steps. ## When to Use - When preparing a new Damus release and the changelog needs to be updated - When rebasing a release-changelog branch onto master and picking up new entries ## Overview Damus uses a Python script (`devtools/changelog.py`) to assist in generating changelogs from git commit history. The changelog format follows [Keep a Changelog](https://keepachangelog.com/) conventions. ## Prerequisites - Python 3 with `mako` and `requests` packages installed: ``` pip install mako requests ``` - Access to the full git history (not a shallow clone). If needed, run: ``` git fetch --unshallow origin git fetch origin tag <from_tag> ``` ## Step 1: Identify the Commit Range Find the tag for the previous release (e.g. `v1.16.1`) and the commit hash for the new release candidate: ```bash git tag | sort -V | tail -20 # list recent tags git rev-parse v1.16.1 # resolve a tag to its commit SHA ``` The commit range format is: `<from_tag>..<to_commit>` Example: `v1.16.1..5cb8a49` ## Step 2: Run the Changelog Script ```bash python3 devtools/changelog.py v1.16.1..5cb8a49 ``` This scans git log for `Changelog-<section>:` annotations in commit messages, where `<section>` is one of: `added`, `changed`, `deprecated`, `fixed`, `removed`, `experimental`. **Note:** The script derives the version label from the second argument with the first character stripped (intended for tag names like `v1.17` → `1.17`). When passing a bare commit hash, the version will be wrong—fix it manually when editing `CHANGELOG.md`. ## Step 3: Review and Clean Up the Raw Output The script's output is a starting point that typically needs manual curation: 1. **Fix the version label:** Replace the auto-derived version (e.g. `cb8a49`) with the actual release version (e.g. `1.17`). 2. **Remove duplicate entries:** Some commits may appear after the previous release tag in `master` history but were already included in that previous release's `CHANGELOG.md` (e.g. cherry-picked features from a release branch). Cross-check against the existing `CHANGELOG.md` and remove duplicates. 3. **Remove reverted entries:** If a commit was later reverted, drop its `Changelog-*` entry. The revert commit may itself have a changelog entry explaining the fix—keep that instead. 4. **Fix truncated entries:** Commit messages with a very long first line can cause `Changelog-Fixed:` entries to be truncated. Check the raw `git log` output to find the full intent, or look up the PR for context. 5. **Verify the date:** Use the actual release date, not the commit date from the RC. ## Step 4: Update CHANGELOG.md Prepend the new section to `CHANGELOG.md`, following the existing format: ```markdown ## [1.17] - YYYY-MM-DD ### Added - Feature description (Author Name) ### Changed - Change description (Author Name) ### Fixed - Fix description (Author Name) [1.17]: https://github.com/damus-io/damus/releases/tag/v1.17 ``` Keep the existing `[version]: URL` reference link at the bottom of each section. ## Step 5: Commit the Changelog ```bash git add CHANGELOG.md git commit -s -m "v1.17 changelog" ``` ## Tips - **Changelog annotations in commits:** Contributors should include a line like `Changelog-Added: Description of feature` in their commit messages so the script can pick them up automatically. - **`Changelog-None`:** Use this in commit messages that intentionally have no changelog entry (e.g. internal refactors, test fixes). The script ignores it. - **Author attribution:** The script appends the git author name in parentheses. Keep these intact—they credit contributors. - **Sections in the script** are: `added`, `changed`, `deprecated`, `fixed`, `removed`, `experimental`. Only sections that have at least one entry are rendered.
GitHub에서 보기