Add a repo-per-workspace checkpoint service in addition to repo-per-task #1357
+403
−236
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
The initial checkpoint creation is significantly faster for large repos if we have a global shadow repo instead of a per-task repo. It also save a lot of disk space.
Implementation
Screenshots
How to Test
Get in Touch
Important
Add repo-per-workspace checkpoint service to optimize checkpoint creation for large repos, with UI and backend support for new checkpoint strategies.
checkpointStorage
option toCline
class inCline.ts
to choose between "task" or "workspace" storage.getCheckpointService()
andgetInitializedCheckpointService()
inCline.ts
to manage checkpoint services.checkpointDiff()
andcheckpointRestore()
inCline.ts
to handle new checkpoint services.RepoPerTaskCheckpointService
andRepoPerWorkspaceCheckpointService
inservices/checkpoints
.RepoPerWorkspaceCheckpointService
manages branches for each task.ShadowCheckpointService
to support new services.CheckpointMenu.tsx
to handle new checkpoint actions.previousCommitHash
tocheckpointDiff
payload inWebviewMessage.ts
.HistoryView.tsx
for task history display.This description was created by
for d7fb998. It will automatically update as commits are pushed.