Comment 4 for bug 277537

Revision history for this message
John A Meinel (jameinel) wrote :

So, to try and give a simple answer...

It appears the parents are listed in the wrong order for some revisions. This was a known issue with older bzr versions, and I'm not 100% sure which version of bzr was used for the conversion.

bzr 0.91 claims to have fixed it, and updated "bzr check" to find this problem and "bzr reconcile" to correct it.

I'll try some ascii art:

 A... introduced 'foo'
 |\
 B.C. both 'B' and 'C' modify 'foo'
 |/
 D... Just merging the changes back

At this point the parents of 'foo' should be "D => (B, C)", but for some reason
we have "D => (C, B)".

I believe this specifically happened because the old version used to use a
'set()' which did not preserve ordering.

Anyway, there is already code in "bzr reconcile" which is meant to fix this
case. I haven't finished running it yet (to be positive), but it should be
possible to run "bzr reconcile" in all affected repositories, and fix this.

Also, if this does fix it, it is probably reasonable to write something
streamlined, which only fixes these cases.

Or alternatively, gets run in one repository, and records what needed to be
changed, so it can just be replayed into all the other repositories which
have this problem.