[Top][All Lists]

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

Re: [Monotone-devel] fatal: std::logic_error: invar

From: Zbynek Winkler
Subject: Re: [Monotone-devel] fatal: std::logic_error: invariant 'I(left_name == right_name)' violated
Date: Fri, 28 Mar 2008 08:55:37 +0100

On 27/03/2008, Markus Schiltknecht <address@hidden> wrote:
> Hi,
>  Brian May wrote:
>  > I don't understand this; I thought Monotone only considered two file/dir
>  > to be the same if they shared a common ancestor. In this case, it would
>  > appear both files have different ancestors, and the filenames are
>  > different at the time of merge, so I don't see why they should conflict.
> Well, the full file_path is different, yes. But the parent directory, to
>  which the file should be added is the same. It only got renamed in between.
>  Condider this:
>          base_rev          o   containing dir "foo/"
>          /     \
>         /       \
>    rename      add file
>   "foo" to     "foo/x"
>    "bar"
>  The left revision contains no directory named "foo", although the right
>  revision adds a file "foo/x". Now, because monotone tracks renames, it
>  known directory "foo" had been renamed to "bar", and thus the merged
>  revision contains a file "bar/x".
>  With me so far?
>  Now, if the left revision adds a file "bar/x", monotone has a problem.
>  It knows the directory "foo" has been renamed to "bar" on the left. It's
>  the same directory. But both revisions want to add a file "x" to that
>  directory. Now it exits with:
>  conflict: duplicate name 'x' for the directory
>            named 'bar' on the left and
>            named 'foo' on the right.
>  I know this is somewhat confusing. But the *same* directory can have
>  different names, if you decide to track renames.

Nice explanation. I'd like to offer alternate view. It reminds me more
the case when two different revisions independently add a file with
the same name. I don't see why in this case there should be a conflict
on the name of the directory...



reply via email to

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