name: update-changelog description: “更新变更日志前阅读此技能”
更新仓库的变更日志,包含当前版本(main)与上一版本之间尚未纳入的更改。如果CHANGELOG.md不存在,则使用CHANGELOG。
分步流程
1. 确定基线版本
如果未提供基线版本,使用最近的git标签。您可以使用git describe --tags --abbrev=0来查找它。
2. 查找git提交
使用以下命令收集提交信息:
# 获取基线版本(如果未提供)
git describe --tags --abbrev=0
# 获取自基线版本以来的所有提交
git log <基线版本>..HEAD
3. 更新变更日志
读取现有的变更日志文件(CHANGELOG.md,如果缺少则使用CHANGELOG),检查是否有尚未纳入的更改,然后添加它们。始终只将它们添加到"未发布"部分。如果还没有该部分,请按现有变更日志的风格在顶部添加(例如,## 未发布 对比 ## [未发布])。
编写变更日志的基本规则
内容指南
- 关注影响用户的显著更改(功能、修复、破坏性变更)
- 在可用时提及拉取请求(
#编号),但不要原始提交哈希 - 忽略不显著的更改(拼写错误修复、内部重构、次要文档更新)
- 适当时将相关更改分组在一起
- 按重要性顺序排列条目:先破坏性变更,然后功能,最后修复
风格指南
- 使用有效的Markdown语法
- 每个条目以过去时动词或描述性短语开头
- 保持条目简洁但足够描述性以理解更改
- 使用项目符号(
*或-)表示单个更改 - 用反引号格式化代码引用(例如,
`foo.cleanup`)
示例格式
## 2.13.0
* 向 `|sort` 过滤器添加了多键支持。 #827
* 修复 `not undefined` 与严格未定义行为的问题。 #838
* 添加了对Python自由线程的支持。 #841
## 2.12.0
* Python中的项目或属性查找将不再吞没所有错误。 #814
* 添加了 `|zip` 过滤器。 #818
* 修复 `|wordwrap` 过滤器的 `break_on_hyphens` 问题。 #823
* 优先处理 `unknown_method_callback` 的错误消息。 #824
* 在自动转义中忽略 `.jinja` 和 `.jinja2` 扩展名。 #832
好与坏的示例
好的:
修复了TypeScript SDK导致CJS配置错误的问题。添加了对检查点写入中声明超时延长的支持。改进了任务声明过期时的错误报告。
坏的:
修复错误(太模糊)更新依赖项(不显著,除非修复安全漏洞)重构内部代码结构(内部更改,非用户相关)修复注释中的拼写错误(不显著)
注意事项
- 如果当前变更日志已有包含内容的"未发布"部分,请附加到它而不是替换它
- 保留现有变更日志的风格和格式(标题、项目符号样式、排序和间距)
- 如果仓库使用不同的默认分支名称,将其视为"当前版本"而不是
main - 当不确定更改是否显著时,倾向于包含它