git-reset: do not be confused if there is nothing to reset
The purpose of the function update_index_from_diff() (which is the callback function we give do_diff_cache()) is to update those index entries which differ from the given commit. Since do_diff_cache() plays games with the in-memory index, this function discarded the cache and reread it. Then, back in the function read_from_tree() we wrote the index. Of course, this broke down when there were no changes and update_index_from_diff() was not called, and therefore the mangled index was not discarded. The solution is to move the index writing into the function update_index_from_diff(). Noticed by Björn Steinbrink. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
19391c371c
commit
2e7a9785c2
@ -402,4 +402,11 @@ test_expect_success 'test resetting the index at give paths' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'resetting an unmodified path is a no-op' '
|
||||
git reset --hard &&
|
||||
git reset -- file1 &&
|
||||
git diff-files --exit-code &&
|
||||
git diff-index --cached --exit-code HEAD
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user