monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] merge_into_workspace, invariant 'I(!next.empty())'


From: Matthew Gregan
Subject: Re: [Monotone-devel] merge_into_workspace, invariant 'I(!next.empty())' violated
Date: Sun, 4 Mar 2007 12:36:18 +1300
User-agent: Mutt/1.5.13 (2006-08-11)

At 2007-03-02T22:59:22+0100, Georg-W. Koltermann wrote:
> started up on Linux 2.6.17-11-386 #2 Thu Feb 1 19:50:13 UTC 2007 i686
> command line: 'mtn', '-d', '/tmp/import.mtn', '--rcfile',
> '/home/hunter/gwk/monotonerc.import', 'merge_into_workspace',
> 'aee7bbd58cededa2ac43a37f474e5301a54f5e93'

...

> unclean roster_merge: 0 name conflicts, 0 content conflicts, 0 attr
> conflicts, 0 orphaned node conflicts, 1 rename target conflicts, 0
> directory loop conflicts
> rename target conflict: nodes 378, 1, both want parent 0, name 
> 
> root dir is NULL

Thanks for the report.

It looks like you're trying to merge_into_workspace two revisions which add
a root directory (and with no common ancestor).  Does that sound right?

The current merge_into_workspace implementation only supports merges that
have no conflicts--the non-content conflict resolution code and UI hasn't
been built yet.  It will allow content conflict resolution using the
existing immediate resolution interface (like 'merge' does) prior to writing
out the new two parent workspace, so if there are content conflicts, it will
run your content merger, and leave you with a two parent workspace that
represents a clean merge.

Because the merge you're attempting involves a rename conflict for the root
dir, you can't yet use merge_into_workspace (or merge, for that matter) to
resolve it, because we don't have a UI for allowing non-content conflict
resolution.  You'll need to commit changes to one head to resolve the
conflicts in advance of attempting the merge.

Because you're trying to merge two revisions that add a root dir, the only
way you could merge these two revisions would be using merge_into_dir, but
the UI for that only supports merging another branch into a directory.

Anyway, merge_into_workspace shouldn't be failing with an invariant here, we
should handle this case and report it to the user as a misuse for now.  Once
we have the non-content conflict resolution, we should be able to deal with
this type of merge nicely.

Cheers,
-mjg
-- 
Matthew Gregan                     |/
                                  /|                    address@hidden




reply via email to

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