diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-11-03 13:12:17 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-03 21:44:57 -0700 |
commit | 2e7a9785c27f00a8f7a06edc1d4c9b2f3fa2eeb9 (patch) | |
tree | 02ca6682d75541b5d5d4273c3f8399f96f6e2e03 /t/t7102-reset.sh | |
parent | 19391c371cec06da6cca45dbe3c212bd479cc48c (diff) | |
download | git-2e7a9785c27f00a8f7a06edc1d4c9b2f3fa2eeb9.tar.gz |
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>
Diffstat (limited to 't/t7102-reset.sh')
-rwxr-xr-x | t/t7102-reset.sh | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/t/t7102-reset.sh b/t/t7102-reset.sh index f64b1cbf75..cea9afb764 100755 --- a/t/t7102-reset.sh +++ b/t/t7102-reset.sh @@ -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 |