diff --git a/builtin/stash.c b/builtin/stash.c index e5f1b0607d441b..05bc72204e0fbc 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -1048,6 +1048,8 @@ static int stash_working_tree(struct stash_info *info, struct pathspec ps) struct strbuf diff_output = STRBUF_INIT; struct index_state istate = { NULL }; + init_revisions(&rev, NULL); + set_alternate_index_output(stash_index_path.buf); if (reset_tree(&info->i_tree, 0, 0)) { ret = -1; @@ -1055,7 +1057,6 @@ static int stash_working_tree(struct stash_info *info, struct pathspec ps) } set_alternate_index_output(NULL); - init_revisions(&rev, NULL); rev.prune_data = ps; rev.diffopt.output_format = DIFF_FORMAT_CALLBACK; rev.diffopt.format_callback = add_diff_to_buf; diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh index f1f6ca209edb18..451825e00d7260 100755 --- a/t/t3903-stash.sh +++ b/t/t3903-stash.sh @@ -287,6 +287,14 @@ test_expect_success 'stash an added file' ' test new = "$(cat file3)" ' +test_expect_success 'stash --intent-to-add file' ' + git reset --hard && + echo new >file4 && + git add --intent-to-add file4 && + test_when_finished "git rm -f file4" && + test_must_fail git stash +' + test_expect_success 'stash rm then recreate' ' git reset --hard && git rm file &&