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 3d19aab476
commit dfac7de77d

View File

@@ -112,12 +112,11 @@ async function tryBranchRefFallbackDetailedDiff(
const fileMap = new Map<string, string>(); const fileMap = new Map<string, string>();
try { 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)) { for (const line of nameStatusOutput.split("\n").filter(Boolean)) {
const parts = line.split("\t"); const parsed = parseNameStatusLine(line);
const statusCode = parts[0] ?? "M"; if (!parsed) continue;
const filePath = statusCode.startsWith("R") ? (parts[2] ?? parts[1] ?? "") : (parts[1] ?? ""); fileMap.set(parsed.path, parsed.statusCode);
if (filePath) fileMap.set(filePath, statusCode);
} }
} catch { } catch {
return { files: [], stats: { filesChanged: 0, additions: 0, deletions: 0 } }; 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 }>(); const fileMap = new Map<string, { statusCode: string; oldPath?: string }>();
try { 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)) { for (const line of nameStatusOutput.split("\n").filter(Boolean)) {
const parts = line.split("\t"); const parsed = parseNameStatusLine(line);
const statusCode = parts[0] ?? "M"; if (!parsed) continue;
if (statusCode.startsWith("R")) { fileMap.set(parsed.path, { statusCode: parsed.statusCode, oldPath: parsed.oldPath });
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 });
}
} }
} catch { } catch {
return []; return [];