feat(FN-4528): complete Step 2 — fix fallback rename/copy parsing

Fusion-Task-Id: FN-4528
Fusion-Task-Lineage: 40f587b4-6bf3-4ebd-8870-359ac57b42ea
This commit is contained in:
Fusion
2026-05-14 14:12:02 -07:00
committed by gsxdsm
parent 211fd0817e
commit e41f9dd064

View File

@@ -112,12 +112,11 @@ async function tryBranchRefFallbackDetailedDiff(
const fileMap = new Map<string, string>();
try {
const nameStatusOutput = (await runGitCommand(["diff", "--name-status", `${resolved.baseRef}..${resolved.branchRef}`], rootDir, 10000)).trim();
const nameStatusOutput = (await runGitCommand(["diff", "--name-status", "-M", `${resolved.baseRef}..${resolved.branchRef}`], rootDir, 10000)).trim();
for (const line of nameStatusOutput.split("\n").filter(Boolean)) {
const parts = line.split("\t");
const statusCode = parts[0] ?? "M";
const filePath = statusCode.startsWith("R") ? (parts[2] ?? parts[1] ?? "") : (parts[1] ?? "");
if (filePath) fileMap.set(filePath, statusCode);
const parsed = parseNameStatusLine(line);
if (!parsed) continue;
fileMap.set(parsed.path, parsed.statusCode);
}
} catch {
return { files: [], stats: { filesChanged: 0, additions: 0, deletions: 0 } };
@@ -159,17 +158,11 @@ async function tryBranchRefFallbackFileDiffs(
const fileMap = new Map<string, { statusCode: string; oldPath?: string }>();
try {
const nameStatusOutput = (await runGitCommand(["diff", "--name-status", `${resolved.baseRef}..${resolved.branchRef}`], rootDir, 5000)).trim();
const nameStatusOutput = (await runGitCommand(["diff", "--name-status", "-M", `${resolved.baseRef}..${resolved.branchRef}`], rootDir, 5000)).trim();
for (const line of nameStatusOutput.split("\n").filter(Boolean)) {
const parts = line.split("\t");
const statusCode = parts[0] ?? "M";
if (statusCode.startsWith("R")) {
const nextPath = parts[2] ?? parts[1] ?? "";
if (nextPath) fileMap.set(nextPath, { statusCode, oldPath: parts[1] });
} else {
const filePath = parts[1] ?? "";
if (filePath) fileMap.set(filePath, { statusCode });
}
const parsed = parseNameStatusLine(line);
if (!parsed) continue;
fileMap.set(parsed.path, { statusCode: parsed.statusCode, oldPath: parsed.oldPath });
}
} catch {
return [];