checkout: gracefully handle files deleted from the index#5698
Merged
bk2204 merged 1 commit intogit-lfs:mainfrom Apr 16, 2024
Merged
checkout: gracefully handle files deleted from the index#5698bk2204 merged 1 commit intogit-lfs:mainfrom
bk2204 merged 1 commit intogit-lfs:mainfrom
Conversation
chrisd8088
approved these changes
Apr 3, 2024
Right now, when someone deletes a pointer from the index with `git rm` and then runs `git lfs checkout`, the operation fails with a message of "Could not update the index" because our invocation of `git update-index` is missing the `--add` flag. Obviously, the user does not expect an error in this case, and `git checkout` simply ignores files staged for deletation, so let's do the same thing. If a file on disk is deleted, check the index with `git diff-index` to see if it's deleted from `HEAD`. If so, ignore the file, just like Git does. Note that we use `git diff-index` specifically because it doesn't refresh the index and is therefore much cheaper than alternatives, such as `git status`, which might do that.
0e9adbc to
d329917
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Right now, when someone deletes a pointer from the index with
git rmand then runsgit lfs checkout, the operation fails with a message of "Could not update the index" because our invocation ofgit update-indexis missing the--addflag.Obviously, the user does not expect an error in this case, and
git checkoutsimply ignores files staged for deletation, so let's do the same thing. If a file on disk is deleted, check the index withgit diff-indexto see if it's deleted fromHEAD. If so, ignore the file, just like Git does. Note that we usegit diff-indexspecifically because it doesn't refresh the index and is therefore much cheaper than alternatives, such asgit status, which might do that.Fixes #5669