Sat 24 May 2008 08:45:19 PM UTC, original submission:
I'm having a peculiar problem merging between two branches (org.debian.gcc-4.3 and org.debian.gnat-4.3) in the Ada-France database.
$ mtn co -d [omitted] -b org.debian.gcc-4.3
$ cd org.debian.gcc-4.3
$ cat _MTN/revision
format_version "1"
new_manifest [0000000000000000000000000000000000000001]
old_revision [b6268e44129cd7b83c5255096e6a41e02554dcba]
$ mtn propagate org.debian.gnat-4.3 org.debian.gcc-4.3
mtn: propagating org.debian.gnat-4.3 -> org.debian.gcc-4.3
mtn: [source] fdff43d734541e14cd0757c74aaf591bb2abd2e7
mtn: [target] b6268e44129cd7b83c5255096e6a41e02554dcba
mtn: branch 'org.debian.gcc-4.3' is up-to-date with respect to branch 'org.debian.gnat-4.3'
mtn: no action taken
This is untrue, as can be seen by examining the revision graph, which is (with revision ids abbreviated):
fdff 15b3
| \ |
... 2f41
| |
... ...
| |
cf47 921e
| / |
758a ca59
| |
... ...
| |
32c4 b01d
| / |
76e4 989b
| |
... ...
| |
9142 a7d4
| / |
03f5 b5ec
| |
| ...
| |
6b42 b626
The left branch is org.debian.gnat-4.3; the right branch is org.debian.gcc-4.3. Left was merged several times into Right; the last time this occurred was when h:Left was the offending revision, fdff. Then, Right was merged 3 times into Left with no problems. Now the merge algorithm complains but is incorrect, as 6b42 is not an ancestor of b626.
explicit_merge complains in the same way as propagate:
$ mtn explicit_merge h:org.debian.gnat-4.3 h:org.debian.gcc-4.3 org.debian.gnat-4.3
mtn: expanding selection 'h:org.debian.gnat-4.3'
mtn: expanded to 'fdff43d734541e14cd0757c74aaf591bb2abd2e7'
mtn: expanding selection 'h:org.debian.gcc-4.3'
mtn: expanded to 'b6268e44129cd7b83c5255096e6a41e02554dcba'
mtn: misuse: fdff43d734541e14cd0757c74aaf591bb2abd2e7 is already an ancestor of b6268e44129cd7b83c5255096e6a41e02554dcba
But now things become interesting:
$ mtn merge_into_workspace h:org.debian.gnat-4.3
mtn: expanding selection 'h:org.debian.gnat-4.3'
mtn: expanded to 'fdff43d734541e14cd0757c74aaf591bb2abd2e7'
mtn: fatal: std::logic_error: roster.cc:1810: invariant 'I(right_uncommon_ancestors.find(right_rid) != right_uncommon_ancestors.end())' violated
mtn: this is almost certainly a bug in monotone.
mtn: please send this error message, the output of 'mtn version --full',
mtn: and a description of what you were doing to monotone-devel@nongnu.org.
mtn: wrote debugging log to /home/lbrenta/src/tmp/org.debian.gcc-4.3/_MTN/debug
mtn: if reporting a bug, please include this file
The database is available at http://www.ada-france.org if anyone is interested.
|