checkout: gracefully handle files deleted from the index #5698
+45
−6
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