fix(cli): skip deleted files in --changed and --staged #8445
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.
Summary
Fix
--changedand--stagedflags throwing "No such file or directory" error when a file has been deleted or renamed in the working directory but the change hasn't been committed yet.The issue occurs because:
git diff --name-only base...HEADreturns files that exist in HEADSolution
Filter out files that no longer exist in the working directory before processing them. This is done in
get_changed_filesandget_staged_filesfunctions usingfs.path_exists().Test plan
Manual testing:
git checkout mainecho "const a=1" > test.tsgit add test.ts && git commit -m "add test.ts"git checkout -b testecho "const a=2" > test.tsgit add test.ts && git commit -m "modify test.ts"mv test.ts test2.tsbiome check --changed- should no longer throw errorCloses #4952