# Re: Symmetric Merge -- Algorithm

Date: Fri, 20 Apr 2012 14:06:10 +0100 (BST)

> Cristian Amarie wrote:
>
>>>   1. Find the latest rev of A synced to B and of B synced to A.
>>>   2. Choose a base.
>> For me 2 this is an important point regarding obtaining of the same
>> result.
>>
>> Having
>>   / A1 ... Ax ... An-1  -> An  (merge B into A produces An)
>> O
>>   \ B1 ... By ... Bm-1 -> Bm (merge A into B produces Bm)
>> (Ab and Bb BASE candidates)
>
> Hi Cristian.  First, let me see if I understand you.  You are talking about any
> graph consisting of a sequence of 'complete' merges[1] between the two
> branches A and B.  Is this a concrete example, where n=2 and m=3?
>
>     / -- p ---- q ----- A1 -- s ----- A2
>   O       \      \      /      \      /
>     \ --- B1 --- B2 -- r ----- B3 -- t
>
> Here, p/q/r/s/t means a change that is not a merge.  The p/q/r/s/t states are
> the base candidates, not Ab and Bb.

Look at the second diagram in the "Playing catch-up ..." section of <http://wiki.apache.org/subversion/SymmetricMerge#Playing_catch-up_with_Sync_and_Reintegrate>.  The node marked 'base' is the base for the second merge (the merge drawn in red).  Notice that the base node is not the target of the previous merge, instead it is the *source* of the previous merge arrow: A2, not B3.

- Julian