rfc for a change in an error message (cross branch dirty update)

muxator a.mux at inwind.it
Thu Oct 5 16:27:57 EDT 2017


Thanks Denis,

I see I was late to the party.

Maybe, once "experimental.updatecheck=noconflict" stabilizes, we could 
suggest "--merge" only if it is not going to cause a conflict.



On 10/05/2017 09:39 AM, Denis Laxalde wrote:
> muxator via Mercurial-devel a écrit :
>>
>> # HG changeset patch
>> # User muxator <a.mux at inwind.it>
>> # Date 1507151594 -7200
>> #      Wed Oct 04 23:13:14 2017 +0200
>> # Node ID fb134b55bce708f567cb4f32c0d96bb032c2651c
>> # Parent  c67db5dc131d0facdfdadc8c3344a8f3e689867d
>> ux: propose "hg update --merge" in the error message of a nonlinear 
>> dirty update
>
> For the record, this has been proposed previously when the option got 
> introduced. See 
> https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-February/093128.html 
> (follow replies for the rationale).
>
>> When trying an "hg update" of a dirty working copy across branches, 
>> mercurial
>> protects the user aborting with:
>>     abort: uncommitted changes
>>     (commit or update --clean to discard changes)
>>
>> Since mercurial 4.2, however, it is possible to perform such updates 
>> invoking
>> "hg up --merge", but this is not signaled in the error message.
>>
>> Only for these type of updates, this commit modifies the hint after 
>> the error
>> message to:
>>     abort: uncommitted changes
>>     (commit or update --merge to merge the changes. To discard the 
>> changes, update --clean)
>>
>> The case in which the update is aborted due to conflicting changes keeps
>> printing the old error message:
>>    abort: conflicting changes
>>    (commit or update --clean to discard changes)
>>
>> diff --git a/mercurial/merge.py b/mercurial/merge.py
>> --- a/mercurial/merge.py
>> +++ b/mercurial/merge.py
>> @@ -1615,7 +1615,7 @@
>>                           pass # allow updating to successors
>>                       else:
>>                           msg = _("uncommitted changes")
>> -                        hint = _("commit or update --clean to 
>> discard changes")
>> +                        hint = _("commit or update --merge to merge 
>> the changes. To discard the changes, update --clean")
>>                           raise error.UpdateAbort(msg, hint=hint)
>>                   else:
>>                       # Allow jumping branches if clean and specific 
>> rev given
>> diff --git a/tests/test-merge5.t b/tests/test-merge5.t
>> --- a/tests/test-merge5.t
>> +++ b/tests/test-merge5.t
>> @@ -26,7 +26,7 @@
>>
>>     $ hg update 1
>>     abort: uncommitted changes
>> -  (commit or update --clean to discard changes)
>> +  (commit or update --merge to merge the changes. To discard the 
>> changes, update --clean)
>>     [255]
>>     $ mv c a
>>
>> [...]
>> the same for the other tests (where applies: not for the "conflicting 
>> changes" case)
>> [...]
>>
>



More information about the Mercurial-devel mailing list