fix(vcs): preserve batched patch boundaries (#25787)

This commit is contained in:
Luke Parker 2026-05-05 10:34:06 +10:00 committed by GitHub
commit 6a5e329427
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 65 additions and 17 deletions

View file

@ -27,26 +27,29 @@ const cache = new Map<string, FileDiffMetadata>()
function patch(diff: ReviewDiff) {
if (typeof diff.patch === "string") {
const [patch] = parsePatch(diff.patch)
try {
const [patch] = parsePatch(diff.patch)
const beforeLines = []
const afterLines = []
const beforeLines = []
const afterLines = []
for (const hunk of patch.hunks) {
for (const line of hunk.lines) {
if (line.startsWith("-")) {
beforeLines.push(line.slice(1))
} else if (line.startsWith("+")) {
afterLines.push(line.slice(1))
} else {
// context line (starts with ' ')
beforeLines.push(line.slice(1))
afterLines.push(line.slice(1))
for (const hunk of patch.hunks) {
for (const line of hunk.lines) {
if (line.startsWith("-")) {
beforeLines.push(line.slice(1))
} else if (line.startsWith("+")) {
afterLines.push(line.slice(1))
} else {
// context line (starts with ' ')
beforeLines.push(line.slice(1))
afterLines.push(line.slice(1))
}
}
}
}
return { before: beforeLines.join("\n"), after: afterLines.join("\n"), patch: diff.patch }
return { before: beforeLines.join("\n"), after: afterLines.join("\n"), patch: diff.patch }
} catch {
return { before: "", after: "", patch: diff.patch }
}
}
return {
before: "before" in diff && typeof diff.before === "string" ? diff.before : "",