diff options
author | Max Kirillov <max@max630.net> | 2018-07-10 21:17:48 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-07-11 18:35:41 +0200 |
commit | b33fdfc34cda95f92cc7a50e5c81b87f8ee65eef (patch) | |
tree | dd902336f607c413310baae3d40bf51d158081cd /unpack-trees.c | |
parent | Git 2.18 (diff) | |
download | git-b33fdfc34cda95f92cc7a50e5c81b87f8ee65eef.tar.xz git-b33fdfc34cda95f92cc7a50e5c81b87f8ee65eef.zip |
unpack-trees: do not fail reset because of unmerged skipped entry
After modify/delete merge conflict happens in a file skipped by sparse
checkout, "git reset --merge", which implements the "--abort" actions,
and "git reset --hard" fail with message "Entry * not uptodate. Cannot
update sparse checkout."
As explained in [1], the up-to-date checker mistakenly treats conflicted
entry which does not exist in HEAD as still skipped by sparse checkout.
Use the fix suggested in [1]. Also, add test case which verifies the
issue is fixed.
[1] https://public-inbox.org/git/20180616051444.GA29754@duynguyen.home/
Signed-off-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'unpack-trees.c')
-rw-r--r-- | unpack-trees.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 3a85a02a77..eb544ee1b3 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1246,7 +1246,7 @@ static void mark_new_skip_worktree(struct exclude_list *el, if (select_flag && !(ce->ce_flags & select_flag)) continue; - if (!ce_stage(ce)) + if (!ce_stage(ce) && !(ce->ce_flags & CE_CONFLICTED)) ce->ce_flags |= skip_wt_flag; else ce->ce_flags &= ~skip_wt_flag; |