Am Samstag, 18. April 2009 02:54:19 schrieb Andreas Gruenbacher: ....
* This time, apply(dAB, A'') no longer works (a "broken link"). The build service forgot that dAB was created from A, but it can can extract from its logs that apply(dAB, A) and apply(DAB, A') both succeeded. In the desperate attempt to repair the link, it figures out the last version of A* that dAB did still apply against,
A \ dAB---A'
A''
and it does a merge(A'', A', apply(dAB, A')).
If we are lucky, the result will be the same as merge(A'', A, B), but that is only if we are really lucky.
The fix, as I have already pointed out, is very easy: don't forget what diffs were generated from:
A / \ dAB A'
A''
Then, it is trivial to see that A'' and B have A as their common ancestor, and merging suddenly becomes easy:
B = apply(dAB, A) merge(B, A, A'')
All this is true and applies perfectly on manual merging. But please keep in mind that the B branch is maintained by different people than the A branch. And we can not allow that someone is blocking someone else. So is this example a true scenario for you(?): A, A' and A'' are changes in Factory or any Devel Project upstream branch for example and B is some random change which might become a submission later. That means that B has a change for A and lets assume it conflicts with the change in A'. Something which can not get solved automatically but needs to be decided by the contributors. It is essential for us that the A branch still works and also the people responsible for A* are not blocked by the changes in B. So it is the responsibility of B to rebase his change on A''. It might be that manual merge tools can work better in the order you have described in some cases. But I assume that most people will just re-apply their changes based on A'' and fix manually where it breaks. bye adrian PS: Another scenario can be to maintain the delta and adapt it and not a merged code base. For example when someone maintains a patch for enhancing multimedia capatibilities based on our default kernel for example, the goal is not to get something merged in the end, but to recreate the patch in B based on A''. -- Adrian Schroeter SUSE Linux Products GmbH email: adrian@suse.de -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-packaging+help@opensuse.org