返回 Bug 清单
BUG-0506project-52高已修复backend-logic

Gitea 批量推送静默失败:API 返回 success 但实际 refs 没写进去

发现:2026-10-07验证:2026-10-27置信度:70%

症状

批量脚本跑完显示 136 全 success,后来检查 project-07 在 Gitea 上是空的(有仓库但无 refs),dragoanscale/project-07/gic-core 等都缺 refs。重新 SSH push 才成功。

根因

HTTPS + token 方式批量推送 136 仓库时,Gitea API /api/v1/repos 对每个仓库返回 201 Created,脚本以为都成功了。但后来 SSH 全量重推时发现大量仓库 refs 实际没写进 Gitea —— 可能是 HTTPS token 鉴权在某些分支 push 场景下静默跳过了(比如 token 有 repo write scope 但没 team_repo 关联),或者 Gitea rollback 后的 DB 状态还在异步修复中。

修复方案

批量推送后**必须逐仓库验证**:git clone 空目录从 Gitea → 检查 git branch 有 main。或者脚本里对每个仓库追加 API 验证 GET /api/v1/repos/{owner}/{repo}/branches/main 返回 200 才算真正成功。预防:不要依赖 API 创建成功判定,必须验证 refs 实际存在。

错误签名

批量推送脚本 exit 0 全绿,SSH 重推时发现 project-07 等 55 仓库 Gitea 上 refs/heads/main 根本不存在

技术信息

来源项目

project-52

涉及文件

批量推送 Python 脚本, Gitea API /api/v1/repos

标签

project-52, mcp-reported, source-agent