From: Junio C Hamano <junkio@cox.net>
To: Alex Riesen <raa.lkml@gmail.com>
Cc: git@vger.kernel.org, Daniel Barkalow <barkalow@iabervon.org>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 4/5] merge-recursive: handle D/F conflict case more carefully.
Date: Mon, 09 Apr 2007 12:53:43 -0700 [thread overview]
Message-ID: <7vk5wlz5mg.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <20070409185809.GA13212@steel.home> (Alex Riesen's message of "Mon, 9 Apr 2007 20:58:09 +0200")
Alex Riesen <raa.lkml@gmail.com> writes:
> Junio C Hamano, Sat, Apr 07, 2007 16:42:55 +0200:
>> + if (unlink(path)) {
>> + if (errno == EISDIR) {
>> + /* something else exists */
>> + error(msg, path, ": perhaps a D/F conflict?");
>
> isn't this one an F/D conflict?
Yes, as I said in a separate message, the current D/F detector
code in merge-recursive does not catch this case in t3030 test
and comes to this codepath to write it out:
From: Junio C Hamano <junkio@cox.net>
Subject: Re: [PATCH 5/5] t3030: merge-recursive backend test.
Date: Sat, 07 Apr 2007 22:17:25 -0700
Message-ID: <7vmz1ja1i2.fsf@assigned-by-dhcp.cox.net>
> +test_expect_success 'merge-recursive d/f conflict result' '
> +
> + git ls-files -s >actual &&
> + (
> + echo "100644 $o0 0 A"
> + echo "100644 $o0 1 a"
> + echo "100644 $o1 2 a"
> + echo "100644 $o4 0 a/c"
> + echo "100644 $o0 0 b"
> + echo "100644 $o1 0 d/e"
> + ) >expected &&
> + git diff -u expected actual
> +
> +'
The expected result of this test is what I find very iffy. The
input trees are:
* Ancestor has a file "a"
* Our tree has a file "a", which was modified from the
ancestor's
* The other tree has a file "a/c"
merge-recursive.c::git_merge_trees() calls unpack_trees() using
the threeway_merge function and what it gets back are stage 1
and 2 entries for "a", and stage 3 entry for "a/c" (you can see
it by running "git-read-tree -m $c0 $c1 $c4" instead). But the
output from merge-recursive has "a/c" resolved down to stage 0.
The problem is that process_entry() finds that there is only
stage 3 entry for that path and decides to resolve it. I think
it should do the D/F check and leave "a/c" in stage 3.
The part you quoted is merely working this problem around.
next prev parent reply other threads:[~2007-04-09 19:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-07 14:42 [PATCH 4/5] merge-recursive: handle D/F conflict case more carefully Junio C Hamano
2007-04-09 18:58 ` Alex Riesen
2007-04-09 19:53 ` Junio C Hamano [this message]
2007-04-10 8:40 ` Alex Riesen
2007-04-10 18:20 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vk5wlz5mg.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
--cc=raa.lkml@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox