From 896cf9df44a5ca93852e16b54f25fcf9a1eac35e Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Wed, 27 Aug 2025 16:04:25 -0600 Subject: [PATCH] fix(windows): use GIT_WORK_TREE for ShadowCheckpointService to avoid core.worktree invalid work tree config --- src/services/checkpoints/ShadowCheckpointService.ts | 6 ++++-- src/services/file-changes/FCOMessageHandler.ts | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/services/checkpoints/ShadowCheckpointService.ts b/src/services/checkpoints/ShadowCheckpointService.ts index befbb3ad90..e0267f88b4 100644 --- a/src/services/checkpoints/ShadowCheckpointService.ts +++ b/src/services/checkpoints/ShadowCheckpointService.ts @@ -77,7 +77,9 @@ export abstract class ShadowCheckpointService extends EventEmitter { } await fs.mkdir(this.checkpointsDir, { recursive: true }) - const git = simpleGit(this.workspaceDir, { binary: "git" }).env("GIT_DIR", this.dotGitDir) + const git = simpleGit(this.workspaceDir, { binary: "git" }) + .env("GIT_DIR", this.dotGitDir) + .env("GIT_WORK_TREE", this.workspaceDir) const gitVersion = await git.version() this.log(`[${this.constructor.name}#create] git = ${gitVersion}`) @@ -123,7 +125,7 @@ export abstract class ShadowCheckpointService extends EventEmitter { } else { this.log(`[${this.constructor.name}#initShadowGit] creating shadow git repo at ${this.checkpointsDir}`) await git.init() - await git.addConfig("core.worktree", this.workspaceDir) // Sets the working tree to the current workspace. + // Use GIT_WORK_TREE environment (set on the git instance) instead of core.worktree to avoid platform-specific issues await git.addConfig("commit.gpgSign", "false") // Disable commit signing for shadow repo. await git.addConfig("user.name", "Roo Code") await git.addConfig("user.email", "noreply@example.com") diff --git a/src/services/file-changes/FCOMessageHandler.ts b/src/services/file-changes/FCOMessageHandler.ts index 2bd6a2b554..da89645525 100644 --- a/src/services/file-changes/FCOMessageHandler.ts +++ b/src/services/file-changes/FCOMessageHandler.ts @@ -35,7 +35,7 @@ export class FCOMessageHandler { * Handle FCO-specific messages */ public async handleMessage(message: WebviewMessage): Promise { - const task = this.provider.getCurrentCline() + const task = this.provider.getCurrentTask() switch (message.type) { case "webviewReady": { @@ -206,7 +206,7 @@ export class FCOMessageHandler { } // Get the current task and checkpoint service - const currentTask = this.provider.getCurrentCline() + const currentTask = this.provider.getCurrentTask() if (!currentTask) { console.error(`[FCO] No current task found for file reversion`) return @@ -278,7 +278,7 @@ export class FCOMessageHandler { : changeset.files // Get the current task and checkpoint service - const currentTask = this.provider.getCurrentCline() + const currentTask = this.provider.getCurrentTask() if (!currentTask) { console.error(`[FCO] No current task found for file reversion`) return