monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] non-content conflict messages


From: Stephen Leake
Subject: Re: [Monotone-devel] non-content conflict messages
Date: Mon, 24 Sep 2007 06:57:48 -0400
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/22.1 (windows-nt)

"Zack Weinberg" <address@hidden> writes:

> On 9/23/07, Derek Scherger <address@hidden> wrote:
>> I've been playing around a bit with the rather cryptic messages that
>> monotone generates on so called non-content conflicts and hopefully have
>> improved things a bit.
>
> Cool!  Your revisions are definitely better than what we had, but I
> think they could be even better still.

I agree Derek's changes are better; I have been confused by these
messages.

I also agree with Zack's comments, but I suspect it is difficult to
distinguish some of the cases he outlines (having just looked at
similar issues in automate inventory).

I definitely agree with the recommendation for full paths.

A few details:

>> [OLD] mtn: warning: name conflict on node 2: [parent 1, self right] vs.
>> [parent 1, self left]
>> [NEW] mtn: warning: divergent name conflict: one node (2) wants two
>> names ('right' and 'left')
>
> mtn: name split: ancestral (file|directory) 'LCA_FILE'
> mtn: renamed to 'LEFT_FILE' on the left
> mtn: renamed to 'RIGHT_FILE' on the right

I would avoid "technical" terms like 'divergent' and 'convergent'.
Zack's phrasing is just as precise, but kinder to the newbies.

>> [OLD] mtn: warning: rename target conflict: nodes 6, 5, both want parent
>> 3, name bar
>> [NEW] mtn: warning: convergent name conflict: two nodes (5 and 6) want
>> one name ('bar')
>
> mtn: name collision: (file|directory) 'TARGET_FILE'
> mtn: renamed from 'LEFT_LCA_FILE' on the left
> mtn: renamed from 'RIGHT_LCA_FILE' on the right

As Zack says, talking about 'nodes' and node numbers is only
confusing. I think this is a good way of displaying the same
information.

>> [OLD] mtn: warning: directory loop conflict: node 9, wanted parent 8,
>> name foo
>> [NEW] mtn: warning: directory loop conflict: between 'foo' (node 9) and
>> 'bar' (node 8)
>
> If this happens the way I think it happens,
>
> mtn: attempt to create a directory loop:
> mtn: 'foo' renamed to 'bar/foo' on the left
> mtn: and 'foo/bar' renamed to 'bar' on the right

This is a readable message, but we should only do this if it is
_always_ correct that this is what caused the problem.

>> [OLD] mtn: warning: illegal name conflict: node 16, wanted parent 13,
>> name _MTN
>> [NEW] mtn: warning: illegal name conflict: between 'foo/_MTN' (node 16)
>> and '' (node 13)

My first reaction to this was "how can something conflict with
nothing?". Perhaps this could be:

    mtn: warning: illegal name conflict: between 'foo/_MTN' (node 16)
    and '_MTN' (node 13)

or:

    mtn: '_MTN' is a reserved file name; please rename 'foo/_MTN' to
    something else.

> (Can we please avoid the term 'illegal' in user diagnostics?  Nobody
> broke any laws.)

I don't mind the term "illegal"; it is common for programming
languages to define "legal" and "illegal" syntax, and that's what
monotone is doing here. But I suppose not all users of monotone will
be programmers :).

-- 
-- Stephe




reply via email to

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