Skip to content

Commit f29dbbb

Browse files
authored
fix(review): disable external diff in git commands (#320)
1 parent 03390eb commit f29dbbb

5 files changed

Lines changed: 22 additions & 13 deletions

File tree

apps/pi-extension/review-core.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ async function getUntrackedFileDiffs(
188188
const diffResult = await runtime.runGit(
189189
[
190190
"diff",
191+
"--no-ext-diff",
191192
"--no-index",
192193
`--src-prefix=${srcPrefix}`,
193194
`--dst-prefix=${dstPrefix}`,
@@ -271,6 +272,7 @@ export async function runGitDiff(
271272
case "uncommitted": {
272273
const trackedDiffArgs = [
273274
"diff",
275+
"--no-ext-diff",
274276
"HEAD",
275277
"--src-prefix=a/",
276278
"--dst-prefix=b/",
@@ -298,6 +300,7 @@ export async function runGitDiff(
298300
case "staged": {
299301
const stagedDiffArgs = [
300302
"diff",
303+
"--no-ext-diff",
301304
"--staged",
302305
"--src-prefix=a/",
303306
"--dst-prefix=b/",
@@ -312,7 +315,7 @@ export async function runGitDiff(
312315
}
313316

314317
case "unstaged": {
315-
const trackedDiffArgs = ["diff", "--src-prefix=a/", "--dst-prefix=b/"];
318+
const trackedDiffArgs = ["diff", "--no-ext-diff", "--src-prefix=a/", "--dst-prefix=b/"];
316319
const trackedDiff = assertGitSuccess(
317320
await runtime.runGit(trackedDiffArgs, { cwd }),
318321
trackedDiffArgs,
@@ -335,8 +338,8 @@ export async function runGitDiff(
335338
);
336339
const args =
337340
hasParent.exitCode === 0
338-
? ["diff", "HEAD~1..HEAD", "--src-prefix=a/", "--dst-prefix=b/"]
339-
: ["diff", "--root", "HEAD", "--src-prefix=a/", "--dst-prefix=b/"];
341+
? ["diff", "--no-ext-diff", "HEAD~1..HEAD", "--src-prefix=a/", "--dst-prefix=b/"]
342+
: ["diff", "--no-ext-diff", "--root", "HEAD", "--src-prefix=a/", "--dst-prefix=b/"];
340343
const lastCommitDiff = assertGitSuccess(
341344
await runtime.runGit(args, { cwd }),
342345
args,
@@ -349,6 +352,7 @@ export async function runGitDiff(
349352
case "branch": {
350353
const branchDiffArgs = [
351354
"diff",
355+
"--no-ext-diff",
352356
`${defaultBranch}..HEAD`,
353357
"--src-prefix=a/",
354358
"--dst-prefix=b/",

apps/review/server/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ const gitRef = args.filter((arg) => arg !== "--staged").join(" ").trim();
3434
// Build git diff command
3535
let diffCommand: string[];
3636
if (isStaged) {
37-
diffCommand = ["git", "diff", "--staged"];
37+
diffCommand = ["git", "diff", "--no-ext-diff", "--staged"];
3838
} else if (gitRef) {
39-
diffCommand = ["git", "diff", gitRef];
39+
diffCommand = ["git", "diff", "--no-ext-diff", gitRef];
4040
} else {
41-
diffCommand = ["git", "diff"];
41+
diffCommand = ["git", "diff", "--no-ext-diff"];
4242
}
4343

4444
// Execute git diff

bun.lock

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/shared/review-core.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ describe("review-core", () => {
134134

135135
expect(result.patch).toBe("");
136136
expect(result.label).toBe("Error: branch");
137-
expect(result.error).toContain("git diff master..HEAD");
137+
expect(result.error).toContain("git diff --no-ext-diff master..HEAD");
138138
});
139139

140140
test("git context lists worktrees and file content lookup returns old/new content", async () => {

packages/shared/review-core.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ async function getUntrackedFileDiffs(
188188
const diffResult = await runtime.runGit(
189189
[
190190
"diff",
191+
"--no-ext-diff",
191192
"--no-index",
192193
`--src-prefix=${srcPrefix}`,
193194
`--dst-prefix=${dstPrefix}`,
@@ -271,6 +272,7 @@ export async function runGitDiff(
271272
case "uncommitted": {
272273
const trackedDiffArgs = [
273274
"diff",
275+
"--no-ext-diff",
274276
"HEAD",
275277
"--src-prefix=a/",
276278
"--dst-prefix=b/",
@@ -298,6 +300,7 @@ export async function runGitDiff(
298300
case "staged": {
299301
const stagedDiffArgs = [
300302
"diff",
303+
"--no-ext-diff",
301304
"--staged",
302305
"--src-prefix=a/",
303306
"--dst-prefix=b/",
@@ -312,7 +315,7 @@ export async function runGitDiff(
312315
}
313316

314317
case "unstaged": {
315-
const trackedDiffArgs = ["diff", "--src-prefix=a/", "--dst-prefix=b/"];
318+
const trackedDiffArgs = ["diff", "--no-ext-diff", "--src-prefix=a/", "--dst-prefix=b/"];
316319
const trackedDiff = assertGitSuccess(
317320
await runtime.runGit(trackedDiffArgs, { cwd }),
318321
trackedDiffArgs,
@@ -335,8 +338,8 @@ export async function runGitDiff(
335338
);
336339
const args =
337340
hasParent.exitCode === 0
338-
? ["diff", "HEAD~1..HEAD", "--src-prefix=a/", "--dst-prefix=b/"]
339-
: ["diff", "--root", "HEAD", "--src-prefix=a/", "--dst-prefix=b/"];
341+
? ["diff", "--no-ext-diff", "HEAD~1..HEAD", "--src-prefix=a/", "--dst-prefix=b/"]
342+
: ["diff", "--no-ext-diff", "--root", "HEAD", "--src-prefix=a/", "--dst-prefix=b/"];
340343
const lastCommitDiff = assertGitSuccess(
341344
await runtime.runGit(args, { cwd }),
342345
args,
@@ -349,6 +352,7 @@ export async function runGitDiff(
349352
case "branch": {
350353
const branchDiffArgs = [
351354
"diff",
355+
"--no-ext-diff",
352356
`${defaultBranch}..HEAD`,
353357
"--src-prefix=a/",
354358
"--dst-prefix=b/",

0 commit comments

Comments
 (0)