On 8/24/2011 4:27 PM, Heiko Voigt wrote:
quoted
quoted
b---bc
/ \ /
o X
\ / \
c---cb
[snip]
Supposing you merge bc into cb:
If I understand the situation correctly, the above is done first with
a := cb:sub, b := bc:sub, base := b:sub and then another time with
base := c:sub.
When merging bc and cb there are two merge bases: b and c. The recursive
merge strategy first performs a "virtual" merge between b and c and uses
the result as a fictional merge base between bc and cb. Currently the
submodule merge search runs during the "virtual" merge and gives advice.
Then it later dies while trying to search during the "real" merge.
After applying my patch, try this:
$ cd t && ./t7405-submodule-merge.sh --verbose
...
Merging:
8cbd0fb cb
virtual top-bc
found 2 common ancestor(s):
f6b4d5a b
4d9cfab c
Merging:
f6b4d5a b
4d9cfab c
found 1 common ancestor(s):
a2ff72f a
warning: Failed to merge submodule sub (multiple merges found)
806049692f8921101f2e7223852e3bd74f7187c8: > Merge branch 'sub-c' into sub-bc
db70dfacda48ce55365256a58eaf89b7da87cbe7: > Merge branch 'sub-b' into sub-cb
Auto-merging sub
CONFLICT (submodule): Merge conflict in sub
fatal: --ancestry-path given but there are no bottom commits
One can see that the advice given talks about merging "b:sub" and "c:sub"
and the suggested commits are actually "bc:sub" and "cb:sub". This advice
is not useful to someone mergeing bc and cb.
-Brad