From 4421a8235783d0664faa9a1d45be114fd7ad8206 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 25 Dec 2009 11:57:11 -0800 Subject: resolve-undo: "checkout -m path" uses resolve-undo information Once you resolved conflicts by "git add path", you cannot recreate the conflicted state with "git checkout -m path", because you lost information from higher stages in the index when you resolved them. Since we record the necessary information in the resolve-undo index extension these days, we can reproduce the unmerged state in the index and check it out. Signed-off-by: Junio C Hamano --- builtin-checkout.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'builtin-checkout.c') diff --git a/builtin-checkout.c b/builtin-checkout.c index a0fe7a4e6..bdef1aa38 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -235,6 +235,10 @@ static int checkout_paths(struct tree *source_tree, const char **pathspec, if (report_path_error(ps_matched, pathspec, 0)) return 1; + /* "checkout -m path" to recreate conflicted state */ + if (opts->merge) + unmerge_cache(pathspec); + /* Any unmerged paths? */ for (pos = 0; pos < active_nr; pos++) { struct cache_entry *ce = active_cache[pos]; -- cgit v1.2.1