♻️ 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>`,但该模式只校验首行主题,不机械
|
对提交信息文件可使用 `--message-file <path>`,但该模式只校验首行主题,不机械
|
||||||
校验 body/footer;结果中的 `Validation` 必须明确这一边界。如果项目指引要求使用
|
校验 body/footer;结果中的 `Validation` 必须明确这一边界。如果项目指引要求使用
|
||||||
bundled policy 之外的策略,传入 `--policy <path>`;否则让 validator 使用随 skill
|
bundled policy 之外的策略,传入 `--policy <path>`;否则让 validator 使用随 skill
|
||||||
携带的 JSON。无参数运行检查 CI payload;只有未识别事件或本地调用才回退 `HEAD`,
|
携带的 JSON。无参数的 CI 模式不能代替对新起草候选的 `--subject` 校验;其专用
|
||||||
不能代替对新起草候选的校验。已识别的 push/PR 事件缺失或损坏 payload 时必须失败。
|
约束见下文“CI 输入校验”。
|
||||||
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` 数组或计数字段证明范围完整。
|
|
||||||
|
|
||||||
5. **一致性复核**
|
5. **一致性复核**
|
||||||
|
|
||||||
@@ -123,6 +110,25 @@ policy 的 `emoji.requirement_env` 未设置时使用 `required_by_default`;
|
|||||||
index 也不等于授权提交。未获得相应授权时,不运行 `git commit`,不暂存文件,
|
index 也不等于授权提交。未获得相应授权时,不运行 `git commit`,不暂存文件,
|
||||||
不修改 index。
|
不修改 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