checkout: allow "checkout -m path" to unmerge removed paths
"git checkout -m -- path" uses the unmerge_marked_index() API, whose implementation is incapable of unresolving a path that was resolved as removed. Extend the unmerge_index() API function so that we can mark the ce_flags member of the cache entries we add to the index as unmerged, and replace use of unmerge_marked_index() with it. Now, together with its unmerge_index_entry_at() helper function, unmerge_marked_index() function is no longer called by anybody, and can safely be removed. This makes two known test failures in t2070 and t7201 to succeed. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -566,6 +566,8 @@ static int checkout_paths(const struct checkout_opts *opts,
|
||||
|
||||
if (opts->source_tree)
|
||||
read_tree_some(opts->source_tree, &opts->pathspec);
|
||||
if (opts->merge)
|
||||
unmerge_index(&the_index, &opts->pathspec, CE_MATCHED);
|
||||
|
||||
ps_matched = xcalloc(opts->pathspec.nr, 1);
|
||||
|
||||
@ -589,10 +591,6 @@ static int checkout_paths(const struct checkout_opts *opts,
|
||||
}
|
||||
free(ps_matched);
|
||||
|
||||
/* "checkout -m path" to recreate conflicted state */
|
||||
if (opts->merge)
|
||||
unmerge_marked_index(&the_index);
|
||||
|
||||
/* Any unmerged paths? */
|
||||
for (pos = 0; pos < the_index.cache_nr; pos++) {
|
||||
const struct cache_entry *ce = the_index.cache[pos];
|
||||
|
Reference in New Issue
Block a user