From: Michael J Gruber <git@drmicha.warpmail.net>
To: Claudia.Ignat@loria.fr
Cc: git@vger.kernel.org
Subject: Re: Octopus merge
Date: Thu, 26 Nov 2009 17:52:39 +0100 [thread overview]
Message-ID: <4B0EB257.8080002@drmicha.warpmail.net> (raw)
In-Reply-To: <4B0EA512.1050001@loria.fr>
Claudia.Ignat@loria.fr venit, vidit, dixit 26.11.2009 16:56:
> # !/bin/bash
> TEST_NAME="TP1" # name of the working directory
> rm -rf ${TEST_NAME} # cleaning working directory
> mkdir -p ${TEST_NAME}
> cd ${TEST_NAME}
>
> # initialising initial git workspace
> mkdir ws1
> cd ws1
> git init
>
> # adding a file to ws1
> # commit changes
> echo -e -n "1\n2\n3\n4\n5\n" > file.txt
> git add file.txt
> git commit -m "ws1 | add 12345"
> cd ..
>
> # cloning three times ws1 (as ws2, ws3 and ws4)
> git clone ws1 ws2
> git clone ws1 ws3
> git clone ws1 ws4
> git clone ws1 ws5
>
> # updating file.txt in ws2 (insert X at line 3, then write and quit 'ed')
> # commit changes
> cd ws2
> echo -e "3i\nX\n.\nw\nq\n" | ed file.txt
> git add file.txt
> git commit -m "ws2 | insert 12X345"
> cd ..
>
>
> # updating file.txt in ws3 (insert Y at line 3, then write and quit 'ed')
> # commit changes
> cd ws3
> echo -e "3i\nY\n.\nw\nq\n" | ed file.txt
> git add file.txt
> git commit -m "ws3 | insert 12Y345"
> cd ..
>
> cd ws4
> echo -e -n "U1\n2\n3\n4\n5\n" > u.txt
> git add u.txt
> git commit -m "ws4 | add u.txt"
> cd ..
>
> cd ws5
> echo -e -n "W1\n2\n3\n4\n5\n" > w.txt
> git add w.txt
> git commit -m "ws5 | add w.txt"
> cd ..
>
> # ws3 pull from ws2 ws4 ws5
> cd ws3
> git remote add bws2 ../ws2
> git remote add bws4 ../ws4
> git remote add bws5 ../ws5
> git fetch bws2
> git fetch bws4
> git fetch bws5
> git merge bws4/master bws2/master bws5/master
> cd ..
>
> # resolve conflict in ws3
> cd ws3
First of all, thanks for the clear description and test case!
The octopus strategy cannot do merges which need manual resolution. Or
so the doc says. After trying the merge with 4 2 5, Git tells you:
Trying simple merge with 7ff9b5bd514cb600bac935ebd40eae366bba7d19
Trying simple merge with 6872cd350154743d59cb4d313cbdb122ac43e537
Simple merge did not work, trying automatic merge.
Auto-merging file.txt
ERROR: content conflict in file.txt
fatal: merge program failed
Automated merge did not work.
Should not be doing an Octopus.
Merge with strategy octopus failed.
That is, it aborts the merge completely. If you "resolve" it and commit
it's simply a commit that you make.
If, instead, you merge 4 5 2, Git tells you:
Trying simple merge with e4f78f6905bed39bcd96790a4f63e138a455a445
Trying simple merge with 14c1f2a70767334df5d6d3120631752564094699
Trying simple merge with 8540a039d3fc964d097d4f037357668441d1d4f5
Simple merge did not work, trying automatic merge.
Auto-merging file.txt
ERROR: content conflict in file.txt
fatal: merge program failed
Automatic merge failed; fix conflicts and then commit the result.
Admittedly this looks fatal also, but the last line tells you that the
actual merge process is not aborted yet. If you resolve the conflict and
commit without -m you even see the prepared commit message.
So, octopus can deal with manual conflict resolution if the conflicts
appear in the last step only. That is the difference between the two cases.
Now, in the first case the aborted merge leaves some traces in the index
as well as in the worktree. I'm not sure that is how it's supposed to be.
Cheers,
Michael
next prev parent reply other threads:[~2009-11-26 16:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-26 15:56 Octopus merge Claudia.Ignat
2009-11-26 16:44 ` Thomas Rast
2009-11-26 16:52 ` Michael J Gruber [this message]
2009-12-09 15:10 ` Claudia.Ignat
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=4B0EB257.8080002@drmicha.warpmail.net \
--to=git@drmicha.warpmail.net \
--cc=Claudia.Ignat@loria.fr \
--cc=git@vger.kernel.org \
/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).