Linus Torvalds [off-list ref] writes:
It's literally just the fact that "git merge" does it with no extra
flags or checks. I'd like people to have to be aware of what they are
doing when they merge two different projects, not do it by mistake.
So making it conditional on a flag like "--no-common-root" is what I'd look for.
I think I said essentially the same thing in a separate message; I
am not sure "--no-common-root" is a good name, but I think it is
better to be more explicit than tying this to a strategy.
I don't think the original "resolve" did it, for example. You can't do
a three-way merge without a base.
Yes, and that continues to this day:
# Give up if we are given two or more remotes -- not handling octopus.
case "$remotes" in
?*' '?*)
exit 2 ;;
esac
# Give up if this is a baseless merge.
if test '' = "$bases"
then
exit 2
fi
This is a tangent but I wonder if we should say why we refuse to
the standard error before calling these two "exit"s.