[Top][All Lists]
[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