用途
core-commit 用于为 WordPress 核心撰写符合官方规范的提交信息(commit message)。它依据 WordPress 官方提交信息指南(https://make.wordpress.org/core/handbook/best-practices/commit-messages/)起草提交信息,适用于向 WordPress 核心提交代码、起草 SVN 提交信息,或为 PR 做提交准备的场景。
主要能力
- 按官方格式生成提交信息,包含工单号、组件前缀摘要、描述、Follow-up、Reviewed by/Merges、Props 与工单引用等部分。
- 从 GitHub PR 的 props bot 评论(由 github-actions[bot] 发布)获取预构建的 Props 行作为基础。
- 抓取 Trac 工单的全部参与者,合并两个来源的 Props 名单。
- 根据 Trac 工单或 PR 标题前缀确定组件。
- 生成后可将提交信息添加到 PR 描述底部。
使用方式
该技能需要以下 CLI 工具:gh(GitHub CLI,用于获取 PR 详情和 props bot 评论)、curl(用于抓取 Trac 工单页面)、python3(用于解析 Trac 工单页面的 HTML)。
工作流程:
- 确定 PR URL,无法自动确定时询问用户。
- 获取 PR 的标题、描述、diff 摘要和关联的 Trac 工单。
- 从 PR 获取 props bot 评论。
- 获取 Trac 工单以得到所有参与者。
- 合并两个来源的 Props 名单(尽量慷慨)。
- 从 Trac 工单或 PR 标题前缀确定组件。
- 按格式起草提交信息。
- 提交信息供审阅,并注明 Props 的不确定之处(例如未关联的 GitHub 账号可能需要手动查找 w.org 用户名)。
- 请求审阅并按需迭代。
- 批准后将提交信息添加到 PR 描述底部。
获取 props bot 评论的命令示例:
gh api repos/WordPress/wordpress-develop/issues/{PR_NUMBER}/comments --jq '.[] | select(.user.login == "github-actions[bot]") | .body'
提交信息格式
第 1 行:Trac 工单号,单独一行。
第 2 行:组件前缀加简要摘要,约 50 字符,最多 70 字符(含组件前缀),使用祈使语气,以句号结尾。组件前缀应与 Trac 组件匹配(如 Editor:、Media:、Comments:、Taxonomy:、REST API:)。
描述:与摘要之间空一行。需回答三个问题:为什么需要此更改、如何解决该问题、此更改有何副作用。代码引用使用反引号(如 function_name、hook_name、$variable)。不要手动换行。引用 GitHub issue 时使用完整 URL。描述中避免使用 "props"、"backport"、"backports"、"backporting" 等词。
Follow-up to(可选):与之前变更集直接相关时使用,前面空一行,变更集号用方括号包裹,如 Follow-up to [27195], [41062].
Reviewed by / Merges(仅 backport 时):前面空一行,Reviewed by committer1, committer2. 一行,下一行 Merges [NNNNN] to the X.X branch.(两行之间无空行)。
Props:前面空一行,格式为 Props username1, username2, username3.,"Props" 后无冒号,用户名无 @ 前缀,以句号结尾。应尽量慷慨,包含 bug 报告者、补丁作者、审阅者、测试者及有实质讨论贡献者。
工单引用:紧接 Props 下方(无空行)。Fixes #NNNNN. 会在 Trac 中关闭工单;See #NNNNN. 仅引用不关闭。多个时如 Fixes #19867, #9864. See #31696.
Props 收集规则
- 从 props bot 评论获取基础名单,确认每个用户确实参与了 PR,否则移除。
- 抓取 Trac 工单的所有参与者(报告、评论、确认、测试、审阅或贡献补丁者)。
- 合并两个来源的用户名。
- 移除仅请求状态更新的用户。
- 使用 WordPress.org 用户名(非 GitHub 账号)。
- Trac 用户的显示名即 w.org 用户名;若显示名含空格,使用其 w.org 个人资料 URL 中的 slug。
- 不加 @ 前缀。
- 提交者通常从 Props 中省略自己(除非是重大协作成果)。
- 用户名以逗号加空格分隔,以句号结尾。
适用场景
- 向 WordPress 核心提交代码。
- 起草 SVN 提交信息。
- 为 PR 做提交准备。
限制与注意事项
- 需要环境中提供 gh、curl、python3 三个 CLI 工具。
- 工单号 #NNNNN 和变更集号 [NNNNN] 在 Trac 和 Slack 中会自动链接;不要将 # 加数字用于 Trac 工单引用以外的用途。
- 切勿在同一提交中提交到多个分支。
- RC 阶段所有补丁必须由第二位提交者审阅。
- 提交者的用户名通常应从 Props 中省略(提交归属已隐含)。
- 描述中避免使用 "props"、"backport"、"backports"、"backporting" 等词。
- 关于收费、价格、平台支持等具体信息,资料中暂未提供。