I get MySQL 5.5 from https://code.launchpad.net/~mysql/mysql-server/mysql-5.5 at revision
<email address hidden> .
And MySQL 5.1 from https://code.launchpad.net/~mysql/mysql-server/mysql-5.1 at revision
<email address hidden> .
I do
cd 5.5
bzr merge 5.1 --weave # --weave because it's a criss-cross merge
and I get
Conflict adding files to storage/innodb_plugin. Created directory.
Conflict because storage/innodb_plugin is not versioned, but has versioned children. Versioned directory.
Contents conflict in storage/innodb_plugin/ChangeLog
I didn't expect to have a conflict. This file was deleted in 5.5 long ago. In 5.1 we continue to make modifications to it, but all those modifications were already merged in 5.5 before I started the merge above, so I'd expect no conflict to happen.
More details:
- in 5.1:
bzr touching-revisions storage/innodb_plugin/ChangeLog
prints
3366 added storage/innodb_plugin/ChangeLog
3405 modified storage/innodb_plugin/ChangeLog
3455 modified storage/innodb_plugin/ChangeLog
3461 modified storage/innodb_plugin/ChangeLog
3493 modified storage/innodb_plugin/ChangeLog
3498 modified storage/innodb_plugin/ChangeLog
3509 modified storage/innodb_plugin/ChangeLog
3538 modified storage/innodb_plugin/ChangeLog
3567 modified storage/innodb_plugin/ChangeLog
3583 modified storage/innodb_plugin/ChangeLog
Then I convert revnos to revids (with 'bzr lookup-revision'), and see with "bzr log" that all revisions above are present in 5.5 before I do the merge, except 3583.
So only 3583 can be the cause of the conflict; 3583 is <email address hidden> .
So I try to determine how this revision touched the file in 5.1: it's not present in the output of "bzr annotate --show-ids". So, I tell myself, maybe it deleted a line (which would explain why I don't see it in "bzr annotate"?). So I re-did the merge which led to the creation of <email address hidden> : it's a merge of
<email address hidden>
into
<email address hidden>
(I'm taking the two parents).
I do this merge with "bzr merge", no conflict. And the resulting Changelog file is identical to what is in <email address hidden>, which shows that that revision did no edits on what the merge algorithm had produced. So I believe that that revision has changed nothing by itself, so don't see why it is listed by "bzr touching-revisions", and don't see why I got a content conflict in the first merge at the beginning of this bug report.
Is there a good reason for the conflict?
by the way it's not just me playing with tricky merges; the problem was originally reported by a colleague.