[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-devel] I fooled the cycle detection code :-(
From: |
Christof Petig |
Subject: |
[Monotone-devel] I fooled the cycle detection code :-( |
Date: |
Fri, 25 Nov 2005 13:29:04 +0100 |
User-agent: |
Mozilla Thunderbird 1.0.7 (X11/20051013) |
After some strange but legal criss cross merging yesterday, monotone
refused its work with the following error:
monotone: fatal: std::runtime_error: cycle in table 'manifest_deltas',
at node b4c5672e5c1a1749b6cf4eb78165e18e6480ff67 <-
2a6e1fb46bd1c2f3a197ba0c3a9a3a76428af358 **)
Look at the attached diagramm:
I merged a no longer needed branch and replaced some files with their
pre merge contents. By chance the manifest was identical to that of the
grandfather. This created an interesting difference in the graph layout
of revisions and manifests (time goes forward and backward if you cross
the manifest graph in one direction G-D-C-B-A).
Further investigation *) showed that the manifest graph was perfectly
well but the algorithm mistook it as a loop.
I solved the problem by
delete from manifest_deltas where id like '2a6e1%' and base like 'de750%';
and
delete from manifest_deltas where id like 'de5ff%' and base like 'ea7c2%';
for now (this breaks the rings) but I still think that the problem
should get fixed. Probably that can wait till after roaster merge.
I will try to create a testcase (A has 2 nodes on the left branch and 1
node on the right branch to a common ancestor, I don't know if this
makes any difference, apart from that the graph is perfectly linear)
Christof
**) b4c5 is the left ancestor of A, 2a6e is A
*)
echo 'digraph G {' >/tmp/x.dot
sqlite3 berlios.db "select
'\"'||substr(id,0,5)||'\"->\"'||substr(base,0,5)||'\";' from
manifest_deltas;" >>/tmp/x.dot
echo '}' >>/tmp/x.dot
dot /tmp/x.dot -Tps >/tmp/x.ps
PS: I still have the 'corrupt' database around.
signature.asc
Description: OpenPGP digital signature
- [Monotone-devel] I fooled the cycle detection code :-(,
Christof Petig <=