fix(FN-4726): complete Step 2 — fix done-task diff precedence

Fusion-Task-Id: FN-4726
Fusion-Task-Lineage: 9fa3bfd7-f277-4c03-8d1e-6162eb7771b2
This commit is contained in:
Fusion (runfusion.ai)
2026-05-16 07:35:30 -07:00
committed by gsxdsm
parent a92f9aac2b
commit 6c7b60b6c2

View File

@@ -641,6 +641,29 @@ export function registerSessionDiffRoutes(router: Router, deps: SessionDiffRoute
}
if (aggregated.usedAggregation && aggregated.files.length > 0) {
const rebaseBaseSha = task.mergeDetails?.rebaseBaseSha?.trim();
if (resolvedMergeSha && rebaseBaseSha) {
const rebaseDiffSpec = await resolveRebaseDiffSpec(rebaseBaseSha, resolvedMergeSha, scopedStore.getRootDir());
if (rebaseDiffSpec) {
const rebaseRangeFiles = await collectDoneRangeFiles(rebaseDiffSpec.range, scopedStore.getRootDir()).catch(() => []);
if (rebaseRangeFiles.length >= aggregated.stats.filesChanged) {
const files = rebaseRangeFiles.map((file) => ({
...file,
status: file.status === "renamed" ? "modified" : file.status,
}));
res.json({
files,
stats: {
filesChanged: files.length,
additions: files.reduce((sum, file) => sum + file.additions, 0),
deletions: files.reduce((sum, file) => sum + file.deletions, 0),
},
});
return;
}
}
}
res.json({
files: aggregated.files.map((file) => ({
...file,
@@ -867,6 +890,18 @@ export function registerSessionDiffRoutes(router: Router, deps: SessionDiffRoute
}
if (aggregated.usedAggregation && aggregated.files.length > 0) {
const rebaseBaseSha = task.mergeDetails?.rebaseBaseSha?.trim();
if (resolvedMergeSha && rebaseBaseSha) {
const rebaseDiffSpec = await resolveRebaseDiffSpec(rebaseBaseSha, resolvedMergeSha, scopedStore.getRootDir());
if (rebaseDiffSpec) {
const rebaseRangeFiles = await collectDoneRangeFiles(rebaseDiffSpec.range, scopedStore.getRootDir()).catch(() => []);
if (rebaseRangeFiles.length >= aggregated.stats.filesChanged) {
res.json(rebaseRangeFiles.map((file) => ({ path: file.path, status: file.status, diff: file.patch })));
return;
}
}
}
res.json(aggregated.files.map((file) => ({ path: file.path, status: file.status, diff: file.patch })));
return;
}