checkout: gracefully handle files deleted from the index #5698
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 rm
and then runsgit lfs checkout
, the operation fails with a message of "Could not update the index" because our invocation ofgit 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 withgit diff-index
to see if it's deleted fromHEAD
. If so, ignore the file, just like Git does. Note that we usegit diff-index
specifically because it doesn't refresh the index and is therefore much cheaper than alternatives, such asgit status
, which might do that.Fixes #5669