If the merge base _and_ the to-be merged brach have a certain file, but HEAD has not, do not complain if that file exists anyway. It will not be overwritten. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx> --- On Fri, 20 Oct 2006, Junio C Hamano wrote: > While we are talking about merge-recursive, I could use some > help from somebody familiar with merge-recursive to complete the > read-tree changes Linus mentioned early this month. > > The issue is that we would want to remove one verify_absent() > call in unpack-tree.c:threeway_merge(). When read-tree decides > to leave higher stages around, we do not want it to check if the > merge could clobber a working tree file, because having an > unrelated file at the same path in the working tree sometimes is > and sometimes is not a conflict, depending on the outcome of the > merge, and that part of the code does not _know_ the outcome > yet. How about this? It passes the testsuite, and I tested it with the test case you did, and with the same test case with recursive merge. unpack-trees.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/unpack-trees.c b/unpack-trees.c index 3ac0289..b4994c4 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -658,10 +658,9 @@ int threeway_merge(struct cache_entry ** * up-to-date to avoid the files getting overwritten with * conflict resolution files. */ - if (index) { + if (index) verify_uptodate(index, o); - } - else if (path) + else if (no_anc_exists) verify_absent(path, "overwritten", o); o->nontrivial_merge = 1; -- 1.4.3.1.ga3de1-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html