[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Monotone-devel] change_set.cc:526: invariant 'I(j != p2.end())' vio
From: |
Nathaniel Smith |
Subject: |
Re: [Monotone-devel] change_set.cc:526: invariant 'I(j != p2.end())' violated |
Date: |
Tue, 25 Jan 2005 13:36:04 -0800 |
User-agent: |
Mutt/1.5.6+20040907i |
On Fri, Jan 21, 2005 at 02:14:17PM +0100, Peter Simons wrote:
> monotone: fatal: std::logic_error: change_set.cc:526: invariant 'I(j !=
> p2.end())' violated
Okay, tracked this down. *sigh* It _is_ a rename bug. A different
sort than we've seen before; your revision
216389124693aecb505df1f6c675a9de278724e9
says:
rename_file "installed_packages/bnv_have_qt.m4"
to "bnv_have_qt.m4"
however, the previous revision 80440e1b3db0cabb4d985e670bbcec2bbfb6c270
already has a file named bnv_have_qt.m4, which does not get deleted or
renamed or anything. Which is invalid; you can't have two files with
the same name, you have to say what happened to the one that had that
name originally...
So the root cause seems to be that you renamed one file on top of
another one, and we somehow forgot to put in a check for this so it
went into your database. Working on fixing that part now.
In the mean time, you have a few options...
-- "db rebuild" will rebuild your database, degrading all renames to
add+dels; this will clear out the bad one, while, unfortunately,
breaking your history
-- throw out history back to the merge: it looks like there are 9
revisions since the bad one; some judicious use of 'db execute'
could get rid of them. (Presumably keeping some diffs or the
like to recreate the changes afterwards. Or you could actually
keep the full trees; 'monotone checkout <id>' should work on each
of those trees, it's only merge operations that have to deal with
the changesets.)
It would be nice to have some more surgical and automated way to do
this, but none jumps to mind. If these are both very problematic
options, though, then I can try to think of something.
Very sorry for the inconvenience :-( After 0.15 we added invariants
every few lines all through the merge logic; at this point I'm adding
extensive invariants and checking right inside database::put_revision
too, just in hopes that we'll never have to deal with this again...
-- Nathaniel
--
The Universe may / Be as large as they say
But it wouldn't be missed / If it didn't exist.
-- Piet Hein
- [Monotone-devel] change_set.cc:526: invariant 'I(j != p2.end())' violated, Peter Simons, 2005/01/21
- Re: [Monotone-devel] change_set.cc:526: invariant 'I(j != p2.end())' violated, Nathaniel Smith, 2005/01/21
- [Monotone-devel] Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Peter Simons, 2005/01/22
- Re: [Monotone-devel] change_set.cc:526: invariant 'I(j != p2.end())' violated,
Nathaniel Smith <=
- [Monotone-devel] Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Peter Simons, 2005/01/25
- Re: [Monotone-devel] Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Nathaniel Smith, 2005/01/26
- Re: [Monotone-devel] monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Christof Petig, 2005/01/26
- [Monotone-devel] Re: monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, graydon hoare, 2005/01/27
- Re: [Monotone-devel] Re: monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Christof Petig, 2005/01/27
- Re: [Monotone-devel] Re: monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Nathaniel Smith, 2005/01/27
- Re: [Monotone-devel] monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Christof Petig, 2005/01/27
- Re: [Monotone-devel] monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Richard Levitte - VMS Whacker, 2005/01/27
- Re: [Monotone-devel] monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Christof Petig, 2005/01/27
- Re: [Monotone-devel] monotone comparison, was Re: change_set.cc:526: invariant 'I(j != p2.end())' violated, Richard Levitte - VMS Whacker, 2005/01/27