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