summaryrefslogtreecommitdiff
path: root/unpack-trees.c
diff options
context:
space:
mode:
authorMax Kirillov <max@max630.net>2018-07-10 19:17:48 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-07-11 16:35:41 (GMT)
commitb33fdfc34cda95f92cc7a50e5c81b87f8ee65eef (patch)
treedd902336f607c413310baae3d40bf51d158081cd /unpack-trees.c
parent53f9a3e157dbbc901a02ac2c73346d375e24978c (diff)
downloadgit-b33fdfc34cda95f92cc7a50e5c81b87f8ee65eef.zip
git-b33fdfc34cda95f92cc7a50e5c81b87f8ee65eef.tar.gz
git-b33fdfc34cda95f92cc7a50e5c81b87f8ee65eef.tar.bz2
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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index 3a85a02..eb544ee 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;