monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] monotone: fatal: std::logic_error: ../change_set.cc


From: Nathaniel Smith
Subject: Re: [Monotone-devel] monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated
Date: Tue, 25 Oct 2005 13:56:17 -0700
User-agent: Mutt/1.5.9i

On Tue, Oct 25, 2005 at 10:15:12AM -0400, Peter Portante wrote:
> Nathaniel,
> 
> This is what I have. Sorry if this is not helpful. I can try to reproduce
> this again if it isn't.

Ah-hah, I see what the problem is.  You had a file named BUG; then in
one commit you renamed it to BUG.file; then in the next commit you
renamed BUG.file to BUG/BUG.orig, i.e., you created a directory named
BUG.

IIUC, monotone is getting confused by having both a file and a
directory named "BUG" nearby each other in the ancestry graph; due to
some, err, bugs, in the logic monotone uses to infer the existence of
directories.

It's possible we could add some hack to work around this, but really
the problem is that our current approach to handling change sets is
fundamentally broken in certain edge cases like these, and we just
can't get this particular thing right -- the best we could hope for is
to move the rug around a little, fixing this bug by uncovering another
one.  This is a possibility, if this is really a show-stopper for
you...

But, the real solution is to change how we handle such things.  This
isn't a trivial change, but we've known about this family of problems
for some time now, and we're actively working on a fix in the
"rosters" branch.

So... your options are:
  -- work around the problem by not reusing the same name for a dir
     and a file
     -- possibly you only need to make sure not to do this in quick
        succession; monotone will probably let you get away with it if
        the revisions are far enough apart in history...
  -- "move the rug around" -- fix monotone to work better in your
     case, as a temporary patch.
  -- wait until the real fix is finished (no promises on when this
     will be, but it's under active development and progress so far
     has been encouraging).
Or some combination of the above.  Sorry about this... :-(

(Also, well done -- I recall if anyone actually managed to find the
directory existence bugs in real usage before ;-).)

-- Nathaniel

-- 
Eternity is very long, especially towards the end.
  -- Woody Allen




reply via email to

[Prev in Thread] Current Thread [Next in Thread]