fix(snapshot): handle git add failures with --ignore-errors fallback #9715
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.
Problem
When
git add .fails during snapshot initialization (e.g., due to Windows reserved filenames likenul,con,aux,prn), the snapshot silently returns the empty tree hash (4b825dc642cb6eb9a060e54bf8d69288fbee4904).This causes:
undocommand only reverts conversation, not code changesrevertfunctionality completely non-functionalReproduction Steps
nulin a project directory (Windows)Log Evidence
The hash
4b825dc642cb6eb9a060e54bf8d69288fbee4904is Git's well-known empty tree hash.Solution
git addexit code and log warnings on failure--ignore-errorsflag to skip problematic filesChanges
packages/opencode/src/snapshot/index.ts: Modifiedtrack()function to handlegit addfailures gracefullyTesting
Tested on Windows with a file named
nulthat previously broke snapshot initialization. After the fix, snapshot correctly tracks all other files and undo/revert works as expected.