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:
@@ -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 [];
|
||||||
|
|||||||
Reference in New Issue
Block a user