From: Junio C Hamano Date: Fri, 11 Nov 2005 17:29:10 GMT Subject: Re: Strange merge conflicts against earlier merge. Message-ID: <7v64qzozyx.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20051111114511.GQ30496@pasky.or.cz> Petr Baudis writes: > Does core GIT have support for multibase merges, except for the > recursive merge strategy? How do you do it? There were lengthy discussion on this and a lot of work that went into the resolution. We do three things. - The first implementation does a trial read-tree 3-way using each of the base candidates without smudging the working tree, and counts paths that need file-level merges, to guess the best base, and uses that base. This is in the 'stupid' stratagy. - The above turned out to have a risky corner case, especially when one side reverted a patch and the other one did not. To address this, read-tree was rewritten and 3-way form of read-tree can take more than three trees these days, letting you feed it all the merge base candidates. This code is used in 'resolve' strategy. - The 'recursive' strategy tries to come up with a merge of the candidate bases and uses it as the base of the final merge.