From 07597a3d14cba1e2d7612b2b9e039f41893efb25 Mon Sep 17 00:00:00 2001 From: MrLYC Date: Fri, 30 Jan 2026 00:26:18 +0800 Subject: [PATCH 1/2] fix(git): handle untracked files in collectDiffs for commit message generation Amp-Thread-ID: https://ampcode.com/threads/T-019c0a87-5323-7098-bea3-a1fc7cd43c18 Co-authored-by: Amp --- packages/web/server/lib/git-service.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/web/server/lib/git-service.js b/packages/web/server/lib/git-service.js index 0b57abff..b1a8d70f 100644 --- a/packages/web/server/lib/git-service.js +++ b/packages/web/server/lib/git-service.js @@ -424,8 +424,15 @@ export async function getDiff(directory, { path, staged = false, contextLines = noIndexArgs.push(`-U${Math.max(0, contextLines)}`); } noIndexArgs.push('--no-index', '--', '/dev/null', path); - const noIndexDiff = await git.raw(noIndexArgs); - return noIndexDiff; + try { + const noIndexDiff = await git.raw(noIndexArgs); + return noIndexDiff; + } catch (noIndexError) { + if (noIndexError.message && noIndexError.message.includes('diff --git')) { + return noIndexError.message; + } + throw noIndexError; + } } } catch (error) { console.error('Failed to get Git diff:', error); From 8859215a3755dee2c8d245c91c1fcfcad69609fc Mon Sep 17 00:00:00 2001 From: MrLYC Date: Fri, 30 Jan 2026 00:34:25 +0800 Subject: [PATCH 2/2] fix: improve git diff --no-index error handling Check exitCode === 1 instead of message content, as git diff --no-index returns exit code 1 when differences exist (which is expected behavior, not an error). Amp-Thread-ID: https://ampcode.com/threads/T-019c0a9a-b26b-7719-9718-04185371eb9c Co-authored-by: Amp --- packages/web/server/lib/git-service.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/web/server/lib/git-service.js b/packages/web/server/lib/git-service.js index b1a8d70f..dfbf1678 100644 --- a/packages/web/server/lib/git-service.js +++ b/packages/web/server/lib/git-service.js @@ -428,7 +428,8 @@ export async function getDiff(directory, { path, staged = false, contextLines = const noIndexDiff = await git.raw(noIndexArgs); return noIndexDiff; } catch (noIndexError) { - if (noIndexError.message && noIndexError.message.includes('diff --git')) { + // git diff --no-index returns exit code 1 when differences exist (not a real error) + if (noIndexError.exitCode === 1 && noIndexError.message) { return noIndexError.message; } throw noIndexError;