Merge pull request #1936 from pikasTech/fix/1933-gitea-mirror-plan
Pipelines as Code CI / hwlab-web-probe-sentinel-nc01- Failed
Pipelines as Code CI / platform-infra-gitea-nc01- Success
Pipelines as Code CI / unidesk-host- Success

fix: 修复 Gitea mirror plan 的 targetRepos 回归
This commit is contained in:
Lyon
2026-07-13 21:48:50 +08:00
committed by GitHub
3 changed files with 14 additions and 3 deletions
@@ -49,3 +49,7 @@
### R3.3
依赖 R3.2,覆盖仓库缺失、ref 缺失、重复 delivery、controller 重启、retry exhaustion 与恢复测试;只用修复 PR merge 产生的新自动事件验收 resource bundle 获取成功,禁止人工 mirror、sync、flush、trigger 或 direct GitHub 补洞,完成任务后将详细报告写入[任务报告](./details/github-gitea-durable-source-authority/R3.3_Task_Report.md)。
## R4 [in_progress]
修复 [UniDesk #1933](https://github.com/pikasTech/unidesk/issues/1933) 暴露的 Gitea mirror 默认只读 plan 回归:恢复 repository-scoped targetRepos 计算,保持 mutation authority 不变,补充最小回归验证并由独立 Artificer PR 交付,完成任务后将详细报告写入[任务报告](./details/github-gitea-durable-source-authority/R4_Task_Report.md)。
+8 -2
View File
@@ -499,9 +499,13 @@ describe("migrated CLI 执行 guard 与提示清理", () => {
});
test("Gitea 与 mirror 默认 plan 只返回只读 Next", async () => {
const giteaPlan = await runPlatformInfraGiteaCommand({} as never, ["plan", "--target", "NC01", "--raw"]) as Record<string, unknown>;
const nc01MirrorPlan = await runPlatformInfraGiteaCommand({} as never, ["mirror", "plan", "--target", "NC01", "--raw"]) as Record<string, unknown>;
const jd01MirrorPlan = await runPlatformInfraGiteaCommand({} as never, ["mirror", "plan", "--target", "JD01", "--raw"]) as Record<string, unknown>;
const plans = [
await runPlatformInfraGiteaCommand({} as never, ["plan", "--target", "NC01", "--raw"]),
await runPlatformInfraGiteaCommand({} as never, ["mirror", "plan", "--target", "NC01", "--raw"]),
giteaPlan,
nc01MirrorPlan,
jd01MirrorPlan,
] as Record<string, unknown>[];
for (const plan of plans) {
expect(plan.mutation).toBe(false);
@@ -509,6 +513,8 @@ describe("migrated CLI 执行 guard 与提示清理", () => {
expect(JSON.stringify(plan.next)).toContain("status");
expect(JSON.stringify(plan.next)).toContain(PAC_AUTOMATIC_DELIVERY_REFERENCE);
}
expect(JSON.stringify(nc01MirrorPlan.credentials)).toContain("github-upstream:selfmedia-nc01");
expect(JSON.stringify(jd01MirrorPlan.credentials)).not.toContain("github-upstream:selfmedia-nc01");
});
test("PaC history detail 只按唯一 consumer 生成 Next,四类前缀无默认 consumer 回退", () => {
+2 -1
View File
@@ -314,6 +314,7 @@ async function mirrorWebhookCommand(config: UniDeskConfig, args: string[]): Prom
function mirrorPlan(options: CommonOptions): Record<string, unknown> {
const gitea = readGiteaConfig();
const target = resolveCommandTarget(gitea, options.targetId);
const targetRepos = repositoriesForTarget(gitea, target);
return {
ok: true,
action: "platform-infra-gitea-mirror-plan",
@@ -321,7 +322,7 @@ function mirrorPlan(options: CommonOptions): Record<string, unknown> {
target: targetSummary(target),
sourceAuthority: sourceAuthoritySummary(gitea, target),
responsibilities: gitea.sourceAuthority.responsibilities.map(responsibilitySummary),
repositories: repositoriesForTarget(gitea, target).map((repo) => repositorySummary(gitea, repo)),
repositories: targetRepos.map((repo) => repositorySummary(gitea, repo)),
credentials: credentialSummaries(gitea, targetRepos),
next: mirrorReadOnlyNextCommands(target.id),
};