From: Petr Baudis <pasky@suse.cz>
To: Fredrik Kuivinen <freku045@student.liu.se>
Cc: Martin Langhoff <martin.langhoff@gmail.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: Strange merge conflicts against earlier merge.
Date: Fri, 11 Nov 2005 12:45:11 +0100 [thread overview]
Message-ID: <20051111114511.GQ30496@pasky.or.cz> (raw)
In-Reply-To: <20051111075257.GA4765@c165.ib.student.liu.se>
Dear diary, on Fri, Nov 11, 2005 at 08:52:57AM CET, I got a letter
where Fredrik Kuivinen <freku045@student.liu.se> said that...
> On Thu, Nov 10, 2005 at 01:38:35PM +1300, Martin Langhoff wrote:
> > We are working with a series of closely related heads, and merging
> > among them. I am sometimes finding merge conflicts that I don't think
> > I should be seeing. Assuming two branches, 'local' and 'remote', where
> > local has with remote before (*), and I have no conflicting changes in
> > local...
> >
> > 1 - pull and merge from remote. The merge touches file A, B and C
> > 2 - on local, develop on unrelated files O,P,Q, commit
> > 3 - pull and merge from remote. The merge touches file B, C and D. I
> > am sometimes seeing conflicts on file B and C, which was never touched
> > on local.
> >
> > * - In the case i have, the ancestry before the merge is a bit
> > convoluted. AFAIK, this shouldn't affect us going forward. Both
> > branches have a common ancestor, though, and are now merging often
> > from remote to local.
> >
> > We are using cogito for this, although on step 3 I have also tested
> > with git-merge.sh and I get the same result. It could still be a
> > problem related to how the merge on step 1 is recording the merge.
> >
> > For an example, clone
> > http://locke.catalyst.net.nz/git/moodle.git#mdl-artena-tairawhiti and
> > register also the
> > http://locke.catalyst.net.nz/git/moodle.git#mdl-local branch. Create
> > two heads:
> >
> > master: 214e6374d49e6d014f0ba6f159d585a3fe468909
> > remote: 05059be73c9e09e22b98bc796be35c595e551ed6
> >
> > On git-merge 'testing merge' master remote you'll see conflicts over
> > mod/quiz/editlib.php -- doing the same with cg-merge gets an
> > additional conflict on mod/quiz/export.php. Neither of those files
> > were ever modified on local -- however, both merges brought in changes
> > to the same lines of code.
> >
> > I suspect this is because the merge itself is being considered a
> > commit on the local branch. Fair enough -- git has no way of ensuring
> > that I haven't slipped in a few changes of mine in the merge. OTOH,
> > it's pretty unexpected to see this on files that are not one char
> > different from the 'remote' branch. Am I doing something wrong?
> >
>
> This merge has two common ancestors,
>
> $ git-merge-base --all master remote
> 3b12fc6420c26a6556c2d806fca79dd96e8e22b9
> 2163a9076d9515f00494ba9df7dbc85c9804790f
>
> This may explain the results you get with cg-merge, as that script
> seems to use 'git-merge-base' without the '--all' flag.
Hmm. So what should I do with that? :-)
I wondered about adding multi-base merge support to Cogito, but it seems
to be a bit funny, and totally undocumented. Especially, is it right
that I would end up with _four_ stages in case of two-base "three"-way
merge? That would mean complete rewrite of the one-file merger, right?
And it seems git-merge-index would overflow and crash. :-)
I guess I really don't want to do that, but instead choose one of the
bases. Hmm. Well, I suppose it's as good as anything to leave this
decision on the user. Kind of:
if [ $(wc -l merge-bases) -ge 1 ]; then
echo "Multiple merge bases, please select one by the -b parameter:" >&2
cat merge-bases
echo -n "The most conservative base (but likely a lot of conflicts):" >&2
while true; do
git-merge-base --all $(cat merge-bases) >merge-bases~
mv merge-bases~ merge-bases
[ $(wc -l merge-bases) -eq 1 ] && break
done
cat merge-bases
exit 1
fi
Does core GIT have support for multibase merges, except for the
recursive merge strategy? How do you do it?
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
VI has two modes: the one in which it beeps and the one in which
it doesn't.
next prev parent reply other threads:[~2005-11-11 11:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-10 0:38 Strange merge conflicts against earlier merge Martin Langhoff
2005-11-10 10:20 ` Petr Baudis
2005-11-11 4:40 ` Martin Langhoff
2005-11-11 11:35 ` Petr Baudis
2005-11-11 7:52 ` Fredrik Kuivinen
2005-11-11 11:45 ` Petr Baudis [this message]
2005-11-11 13:12 ` Petr Baudis
2005-11-11 17:29 ` Junio C Hamano
2005-11-11 17:32 ` Petr Baudis
[not found] ` <7v1x1nni78.fsf@assigned-by-dhcp.cox.net>
2005-11-11 21:56 ` Petr Baudis
2005-11-11 22:39 ` Junio C Hamano
2005-11-11 23:33 ` Daniel Barkalow
2005-11-12 0:50 ` 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=20051111114511.GQ30496@pasky.or.cz \
--to=pasky@suse.cz \
--cc=freku045@student.liu.se \
--cc=git@vger.kernel.org \
--cc=martin.langhoff@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;
as well as URLs for NNTP newsgroup(s).