threads / discuss / 3033

Problem resolving an octopus merge conflict

Subject: Problem resolving an octopus merge conflict

## tl;dr

2 messages between Jan 11, 2006 and Jan 11, 2006.

replies: 1people: 2as markdown or json

Sean· Jan 11, 2006, 06:51 UTC · lore
Hi folks,

After a failed regular merge you can fix up the conflicts by hand and then do a commit; the proper parents for the merge will be picked up from MERGE_HEADS. However, after a failed octopus merge this file doesn't exist even though conflict markers _do_ exist in the appropriate files. A little test case is given below:

mkdir otest cd otest

git init-db echo A > file git add file git commit -m "new file"

git checkout -b linus echo B > file git commit -a -m "B file"

git checkout -b torvalds master echo C > file git commit -a -m "C file"

git checkout master git pull . linus torvalds

At which point you'll get back:
defaulting to local storage area
Committing initial tree a9e3325a07117aa5381e044a8d96c26eb30d729d
Trying simple merge with 87915efc19fb0a71f88c1da6f7da0e4454f32a68
Trying simple merge with ec835c64be51803fb46f82c97b266cc60a0b04b7
Simple merge did not work, trying automatic merge.
Auto-merging file
merge: warning: conflicts during merge
ERROR: Merge conflict in file
fatal: merge program failed
No merge strategy handled the merge.
The "file" will contain:

<<<<<<< .merge_file_e7oHn1 C ======= B

>>>>>>> .merge_file_6Z4LD0

After fixing this up though, git-commit won't see this as a merge commit and won't add the proper parent linkages. I'm not sure at this point what the proper fix should be or if this is just pilot error.

Thanks, Sean

Junio C Hamano· Jan 11, 2006, 08:33 UTC · re: Sean · lore

Re: Problem resolving an octopus merge conflict

"Sean" <seanlkml@sympatico.ca> writes:
> After fixing this up though, git-commit won't see this as a merge commit
> and won't add the proper parent linkages.   I'm not sure at this point
> what the proper fix should be or if this is just pilot error.

Not a pilot error, and we do not make it explicit enough, but git-merge-octopus has this comment:

	echo "Simple merge did not work, trying automatic merge."
	git-merge-index -o git-merge-one-file -a ||
	exit 2 ; # Automatic merge failed; should not be doing Octopus

If you need to manually fix up such a merge, that is a sure sign that the branches you merged into an Octopus was not independent bunches after all. Letting such a commit to be made defeats the point of an Octopus, which is to bundle independent tracks of development.

This is more philosophical rather than technical, and may look being unhelpful to you (who wanted to create an Octopus), but is done to help people who later needs to deal with such a merge history.

← back to recent threads