♻️ refactor(commit-message): separate CI input validation
This commit is contained in:
@@ -95,21 +95,8 @@ policy 的 `emoji.requirement_env` 未设置时使用 `required_by_default`;
|
||||
对提交信息文件可使用 `--message-file <path>`,但该模式只校验首行主题,不机械
|
||||
校验 body/footer;结果中的 `Validation` 必须明确这一边界。如果项目指引要求使用
|
||||
bundled policy 之外的策略,传入 `--policy <path>`;否则让 validator 使用随 skill
|
||||
携带的 JSON。无参数运行检查 CI payload;只有未识别事件或本地调用才回退 `HEAD`,
|
||||
不能代替对新起草候选的校验。已识别的 push/PR 事件缺失或损坏 payload 时必须失败。
|
||||
PR 必须同时校验 `pull_request.title` 和本地 Git 中的 `base.sha..head.sha` 完整提交
|
||||
范围;遇到 shallow repository、缺失范围元数据或 Git 对象时必须失败。PR CI 的
|
||||
workflow 编排必须来自可信 base/default branch:直接触发时使用
|
||||
`pull_request_target`,或先用 `pull_request` 准备输入、再由默认分支的
|
||||
`workflow_run` 执行校验。普通 `pull_request` 中来自 PR head 的 workflow 即使切到
|
||||
base worktree,也仍可被待审改动删除或绕过。可信 workflow 必须从 `base.sha` 的
|
||||
可信 base worktree 运行 wrapper、validator 和 policy;只能读取 PR head 的 Git
|
||||
对象,不能在持有 secret 的步骤 checkout 或执行 PR head 内容。
|
||||
普通 push 必须校验本地 Git 中的 `before..after` 完整范围;新分支 push 的 `before`
|
||||
为零对象时,必须用 payload 的目标 `refs/heads/*` 和本地分支图计算该分支相对其它
|
||||
分支新增的完整提交集合。缺少有效范围元数据、目标引用或所需 Git 对象时必须失败;
|
||||
push 所在仓库遇到 shallow repository 也必须失败。不能用可能截断的 payload
|
||||
`commits` 数组或计数字段证明范围完整。
|
||||
携带的 JSON。无参数的 CI 模式不能代替对新起草候选的 `--subject` 校验;其专用
|
||||
约束见下文“CI 输入校验”。
|
||||
|
||||
5. **一致性复核**
|
||||
|
||||
@@ -123,6 +110,25 @@ policy 的 `emoji.requirement_env` 未设置时使用 `required_by_default`;
|
||||
index 也不等于授权提交。未获得相应授权时,不运行 `git commit`,不暂存文件,
|
||||
不修改 index。
|
||||
|
||||
## CI 输入校验(仅无参数模式)
|
||||
|
||||
无参数运行 validator 时检查 CI payload;只有未识别事件或本地调用才回退 `HEAD`。
|
||||
已识别的 push/PR 事件缺失或损坏 payload 时必须失败。
|
||||
|
||||
- **Pull request**:同时校验 `pull_request.title` 和本地 Git 中
|
||||
`base.sha..head.sha` 的完整提交范围;遇到 shallow repository、缺失范围元数据或
|
||||
Git 对象时失败。workflow 编排必须来自可信 base/default branch:直接触发使用
|
||||
`pull_request_target`,或先由 `pull_request` 准备输入、再由默认分支的
|
||||
`workflow_run` 执行。普通 `pull_request` 中来自 PR head 的 workflow 即使切到 base
|
||||
worktree,仍可被待审改动删除或绕过。可信 workflow 必须从 `base.sha` 的可信 base
|
||||
worktree 运行 wrapper、validator 和 policy;只能读取 PR head 的 Git 对象,不能在
|
||||
持有 secret 的步骤 checkout 或执行 PR head 内容。
|
||||
- **Push**:校验本地 Git 中 `before..after` 的完整范围。新分支 push 的 `before` 为
|
||||
零对象时,使用 payload 的目标 `refs/heads/*` 和本地分支图计算该分支相对其它分支
|
||||
新增的完整提交集合。缺少有效范围元数据、目标引用或所需 Git 对象时失败;shallow
|
||||
repository 也必须失败。不能用可能截断的 payload `commits` 数组或计数字段证明
|
||||
范围完整。
|
||||
|
||||
## 输出约定
|
||||
|
||||
以下固定字段名保留英文,以兼容已有调用方;字段内容使用中文:
|
||||
|
||||
Reference in New Issue
Block a user