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

SyncRunner SHA 字段名不统一:GitHub 返回 c.sha 但 Gitea/GitLab 返回 c.id

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

症状

跨平台 sync 时 CompareMultiplePlatforms 报告 100% commit 为新增但实际都存在。增量同步失效每次全量 clone + push。

根因

Adapter 层 listCommits() 各平台返回字段名不同:GitHub API 返回 c.sha,Gitea/GitLab API 返回 c.id。SyncRunner 统一读 c.sha → Gitea/GitLab 的 commit SHA 读成 undefined → SHA 比对永远失败。

修复方案

Adapter 层统一返回 sha 字段(不是 id 也不是 sha)。GitHub c.sha 直接 passthrough,Gitea/GitLab c.id 重命名为 sha。SyncRunner 只读 c.sha 一个字段。

错误签名

SyncRunner compare: 150 commits NEW but platform has 0 local commits

技术信息

来源项目

project-52

涉及文件

packages/core/src/adapters/*Adapter.ts, packages/core/src/sync/SyncRunner.ts

标签

project-52, mcp-reported, source-agent