Skip to content

建议增加打卡 PR 的自动校验与自动合并流程 #46

@web3yaso

Description

@web3yaso

背景

目前很多参与者会通过 PR 更新自己的学习笔记 / 打卡内容,例如修改 notes/{GitHubID}.md 或提交每日 check-in。

但从当前 PR 列表看,很多打卡 PR 长时间保持 open 状态。如果这些 PR 没有被合并,仓库里的 README 打卡表和相关自动同步流程就不会更新,参与者也容易误以为“提交 PR = 已完成打卡”。

问题

当前流程里:

  • 参与者可以提交打卡 PR;
  • 但 PR 不一定会被及时合并;
  • ReopBot.yml 主要在 push 到 main 或定时任务时更新 README;
  • 如果 PR 没有 merge,参与者的内容不会进入 main
  • 因此 PR 本身不能稳定作为打卡完成信号。

建议

希望维护者考虑增加一个自动校验 + 自动合并流程,专门处理低风险的个人打卡 PR。

一个可能的规则是:

  1. PR 只允许修改提交者自己的文件,例如:

    • notes/{GitHubID}.md
    • assets/{GitHubID}/...
  2. PR 不能修改敏感文件,例如:

    • .github/workflows/*
    • sync_status_readme.py
    • README.md
    • 其他参与者的 notes 文件
  3. 自动检查通过后,可以由 bot 自动 approve / auto-merge。

  4. 如果校验失败,则 bot 留 comment,说明失败原因,例如:

    • 修改了不允许的文件
    • 找不到对应日期标题
    • 打卡内容长度不足
    • GitHub ID 和文件名不匹配

好处

  • 减少维护者手动合并大量打卡 PR 的负担;
  • 让参与者的打卡状态更及时反映到 README;
  • 降低“PR 已提交但实际未计入”的误解;
  • 保留 GitHub PR 作为公开 proof-of-work;
  • 通过路径限制和校验规则降低自动合并风险。

可选实现方向

可以增加一个 GitHub Actions workflow:

  • 触发条件:pull_request_targetpull_request
  • 检查 PR 修改文件列表
  • 校验只修改本人 notes/{GitHubID}.md / assets/{GitHubID}/...
  • 运行现有 sync_status_readme.py 或轻量 check-in validator
  • 校验通过后添加 label,例如 checkin-ok
  • 使用 GitHub auto-merge 或 bot merge

讨论点

  1. 参与者通过 PR 更新自己的 notes 是否是被鼓励的流程?
  2. 如果是,是否可以增加自动校验和自动合并?
  3. 如果不是,是否可以在 README 中明确说明正式打卡入口,避免大家误以为 PR 会被计入?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions