Dear Wiki user, You have subscribed to a wiki page or wiki category on "Subversion Wiki" for change notification.
The "SymmetricMerge" page has been changed by JulianFoad: http://wiki.apache.org/subversion/SymmetricMerge?action=diff&rev1=80&rev2=81 Next, we need to account for cherry-picks. If there are cherry-picks from the source [...], we look for the end of the first gap. [TODO...] == Symmetric Merge with Criss-Cross Merge == + The following kind of merge history is known as a 'criss-cross' merge. + + {{attachment:merge-criss-cross-1.png|criss-cross merge 2}} + + The scenario is notorious for being an awkward case for typical DAG-oriented merge algorithms to handle. There are two possible bases, and neither of them is clearly the right one to use, and the choice may make a difference to the result in the general case. + + I don't expect to be able to teach Subversion to resolve criss-cross merges automatically, and I don't think this is important. I think it's on the same level as resolving cases where the user cherry-picked some changes from branches A and B into a third branch C all at once (in one commit) and then wants to automatically sync-merge from C into A. In this case as in that case, Subversion should simply detect that there is no sequence of plain 3-way merges possible, and tell the user. + === Criss-Cross #1: Minimal === - The following kind of merge history is known as a 'criss-cross' merge. - - {{attachment:merge-criss-cross-1.png|criss-cross merge 2}} - - The scenario is notorious for being an awkward case for typical DAG-oriented merge algorithms to handle. There are two possible bases, and neither of them is clearly the right one to use, and the choice may make a difference to the result in the general case. - - This is how Subversion will handle the simple criss-cross merge illustrated in the graph. + This is how Subversion will handle the simple criss-cross merge illustrated in the graph above. - First we pick a base according to whatever rule we decided. It could be A1 or B1. + First we pick a base according to the rules we decided. (At the time of writing this section, I don't know exactly what those rules are.) If the rules take into account the relative ages of A1, B1, A2 and B2, there might be a definite answer. Otherwise there may be no reason to choose one over the other. So, given only the information in the diagram, it could be A1 or B1 with equal probability. Let's see if the choice makes a difference. If we pick base A1:
