From 06ba6606c355fe52bf558fe5dea62d3549a3631a Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 11 Feb 2025 10:19:49 -0500 Subject: [PATCH] Revert "Disable checkpoints on Windows" --- src/core/Cline.ts | 3 +- src/services/checkpoints/CheckpointService.ts | 15 ++++--- .../__tests__/CheckpointService.test.ts | 14 ------- .../src/components/settings/SettingsView.tsx | 40 +++++++++---------- 4 files changed, 30 insertions(+), 42 deletions(-) diff --git a/src/core/Cline.ts b/src/core/Cline.ts index 58be39a11b..83cdabd466 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -143,7 +143,7 @@ export class Cline { this.fuzzyMatchThreshold = fuzzyMatchThreshold ?? 1.0 this.providerRef = new WeakRef(provider) this.diffViewProvider = new DiffViewProvider(cwd) - this.checkpointsEnabled = process.platform !== "win32" && !!enableCheckpoints + this.checkpointsEnabled = enableCheckpoints ?? false if (historyItem) { this.taskId = historyItem.id @@ -3240,7 +3240,6 @@ export class Cline { this.checkpointService = await CheckpointService.create({ taskId: this.taskId, baseDir: vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath).at(0) ?? "", - log: (message) => this.providerRef.deref()?.log(message), }) } diff --git a/src/services/checkpoints/CheckpointService.ts b/src/services/checkpoints/CheckpointService.ts index 871179d500..bf5a2d90d5 100644 --- a/src/services/checkpoints/CheckpointService.ts +++ b/src/services/checkpoints/CheckpointService.ts @@ -2,6 +2,7 @@ import fs from "fs/promises" import { existsSync } from "fs" import path from "path" +import debug from "debug" import simpleGit, { SimpleGit, CleanOptions } from "simple-git" export type CheckpointServiceOptions = { @@ -312,11 +313,15 @@ export class CheckpointService { } public static async create({ taskId, git, baseDir, log = console.log }: CheckpointServiceOptions) { - if (process.platform === "win32") { - throw new Error("Checkpoints are not supported on Windows.") - } - - git = git || simpleGit({ baseDir }) + git = + git || + simpleGit({ + baseDir, + binary: "git", + maxConcurrentProcesses: 1, + config: [], + trimmed: true, + }) const version = await git.version() diff --git a/src/services/checkpoints/__tests__/CheckpointService.test.ts b/src/services/checkpoints/__tests__/CheckpointService.test.ts index caa0952fa1..9165da332a 100644 --- a/src/services/checkpoints/__tests__/CheckpointService.test.ts +++ b/src/services/checkpoints/__tests__/CheckpointService.test.ts @@ -14,7 +14,6 @@ describe("CheckpointService", () => { let git: SimpleGit let testFile: string let service: CheckpointService - let originalPlatform: string const initRepo = async ({ baseDir, @@ -49,19 +48,6 @@ describe("CheckpointService", () => { return { git, testFile } } - beforeAll(() => { - originalPlatform = process.platform - Object.defineProperty(process, "platform", { - value: "darwin", - }) - }) - - afterAll(() => { - Object.defineProperty(process, "platform", { - value: originalPlatform, - }) - }) - beforeEach(async () => { const baseDir = path.join(os.tmpdir(), `checkpoint-service-test-${Date.now()}`) const repo = await initRepo({ baseDir }) diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index c60bbfd136..307ac250da 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -701,29 +701,27 @@ const SettingsView = ({ onDone }: SettingsViewProps) => { )} - {process.platform !== "win32" && ( -
-
- ⚠️ - { - setCheckpointsEnabled(e.target.checked) - }}> - Enable experimental checkpoints - -
-

+

+ ⚠️ + { + setCheckpointsEnabled(e.target.checked) }}> - When enabled, Roo will save a checkpoint whenever a file in the workspace is - modified, added or deleted, letting you easily revert to a previous state. -

+ Enable experimental checkpoints +
- )} +

+ When enabled, Roo will save a checkpoint whenever a file in the workspace is modified, + added or deleted, letting you easily revert to a previous state. +

+
{Object.entries(experimentConfigsMap) .filter((config) => config[0] !== "DIFF_STRATEGY")