[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invar
From: |
Markus Schiltknecht |
Subject: |
Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated |
Date: |
Thu, 27 Mar 2008 22:50:23 +0100 |
User-agent: |
Mozilla-Thunderbird 2.0.0.9 (X11/20080109) |
Hello Marcin,
Marcin W. DÄ…browski wrote:
Today I was playing with monotone 0.39 a bit, and by a mistake
I've triggered 'something' - maybe a bug, at least monotone says so.
Hm..
http://twine.pl/tmp/mtn-roster-merge-bug.zip (20 KiB)
Wow, thanks a lot! If only all bug reports were so nice...
I've distilled that into a simplified test case for monotone's test
suite, see rev. da31a68b.. The following crapscii-art diagram shows
about the minimal setting to trigger the bug:
base_rev o contains directory "foo"
/ \
/ \
adds file adds file o conflicting file additions
"foo/x" "foo/x" on both sides
and |
renames | o renaming parent directory
dir "foo" | on one side
to "bar" |
\ /
\ /
' !BOOM! ' o merge should fail due to
duplicate names
(Yes, I've checked all existing tests/*merge* and some existing bug
reports on merge issues, but didn't find any prior art for that bug.)
The question is - why monotone won't say there's a conflict?
Good question. Normally, i.e. with out the renaming of the parent
directory, the left_name would of course equal the right_name, both were
"foo/x". Due to the renaming, it's more like "bar/x" and "foo/x", but
monotone still knows "bar" and "foo" are the same directory, historically.
Maybe, it's just that invariant which is plain wrong. I'll check the
source code and dig into the issue now.
Again, thank you very much for that *perfect* bug report. If monotone
would nominate a user of the month, you'd get that title immediately :-)
Regards
Markus
- [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Marcin W. DÄ…browski, 2008/03/27
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated,
Markus Schiltknecht <=
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Brian May, 2008/03/27
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Markus Schiltknecht, 2008/03/27
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Zbynek Winkler, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Markus Schiltknecht, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Zbynek Winkler, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Markus Schiltknecht, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Thomas Keller, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Markus Schiltknecht, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Stephen Leake, 2008/03/28
- Re: [Monotone-devel] fatal: std::logic_error: roster_merge.cc:528: invariant 'I(left_name == right_name)' violated, Derek Scherger, 2008/03/28