From: Linus Torvalds Date: Mon, 24 Oct 2005 03:32:04 GMT Subject: Re: LCA2006 Git/Cogito tutorial Message-ID: In-Reply-To: <7vy84jsn1o.fsf@assigned-by-dhcp.cox.net> On Sun, 23 Oct 2005, Junio C Hamano wrote: > > The current callers only feed commits for "$heads" parameters, > so the merge strategy backends are free to figure out the common > ancestor or even generate weave on the fly, but an unwritten > rule was that strategy backends are expected to do something > sensible even when the "common ancestors" and "heads" fed to > them are tree objects, which was my comment about 3-way was > about. Ahh. Yes, if you use raw trees, you're screwed - you can only ever do a 3-way merge, since you can't try to figure out any history. I agree that the "tree only" case is interesting too - it's how you can merge trees that may be related content-wise but don't share a history (eg the same project maintained in separate source trees), and it's obviously how you can merge totally unrelated projects (eg the gitk merge). At the same time, I think that's a different kind of merge, in general. And we definitely shouldn't limit ourselves to things where such merges work. Yes, tree-merges are wonderful, and they work really quite well, but I definitely want to keep the window open for merges that end up taking the full history into account. I just don't think they are nearly as important as some people seem to think. They should be a very special and unusual case, rather than something you expect to happen. Linus