[PATCH] status: support commands.status.relative config

Martin von Zweigbergk martinvonz at google.com
Wed Mar 22 12:23:09 EDT 2017


On Wed, Mar 22, 2017 at 8:42 AM, Martin von Zweigbergk
<martinvonz at google.com> wrote:
> On Wed, Mar 22, 2017 at 3:12 AM, Ryan McElroy <rm at fb.com> wrote:
>> I'm +100 on this patch. We've been doing this in tweakdefaults for ages.
>> Everyone loves it.
>>
>> On 3/22/17 4:35 AM, Martin von Zweigbergk via Mercurial-devel wrote:
>>>
>>> # HG changeset patch
>>> # User Martin von Zweigbergk <martinvonz at google.com>
>>> # Date 1490143844 25200
>>> #      Tue Mar 21 17:50:44 2017 -0700
>>> # Node ID e0e123324f205071c80657079ff83a4e58db862c
>>> # Parent  102f291807c92864a2231e5e925d6cd64783bb59
>>> status: support commands.status.relative config
>>>
>>> When the config is set to true, status output becomes relative to the
>>> working directory. This has bugged me since I started using hg and it
>>> turns it is sillily simple to support it (unless I missed something,
>>> of course).
>>>
>>> We could also add a --relative flag, but I would personally always
>>> want that on, and I haven't heard any use for having it sometimes on,
>>> so this patch only lets you enable it via config.
>>>
>>> diff -r 102f291807c9 -r e0e123324f20 mercurial/commands.py
>>> --- a/mercurial/commands.py     Mon Mar 20 16:34:12 2017 -0700
>>> +++ b/mercurial/commands.py     Tue Mar 21 17:50:44 2017 -0700
>>> @@ -4734,7 +4734,8 @@
>>>       else:
>>>           node1, node2 = scmutil.revpair(repo, revs)
>>>   -    if pats:
>>> +    if pats or (not ui.plain() and
>>> +                ui.configbool('commands', 'status.relative', False)):
>>
>>
>> Style-nits:
>> * The "false" isn't necessary -- that's the default, isn't it?
>
> Ah, thanks. (Guess where I inherited that from :-))
>
>> * Also, I think it would be clearer to divide this into two lines:
>>
>> relative = not ui.plain and ui.configbool('commands', 'status.relative')
>> if pats or relative:
>
> As Yuya pointed out, the ui.plain() should probably be done in one
> place (in ui.py) for all [commands] config, which will make this a
> little simpler. I still think your proposal is good, so I'll address
> that in V2.

Actually, after the "not ui.plain() and" and the unnecessary False
were removed, it got pretty simple, so I'm leaving on one line.

>
>>
>>
>>
>>>           cwd = repo.getcwd()
>>>       else:
>>>           cwd = ''
>>> diff -r 102f291807c9 -r e0e123324f20 mercurial/help/config.txt
>>> --- a/mercurial/help/config.txt Mon Mar 20 16:34:12 2017 -0700
>>> +++ b/mercurial/help/config.txt Tue Mar 21 17:50:44 2017 -0700
>>> @@ -417,6 +417,10 @@
>>>   ``commands``
>>>   ----------
>>>   +``status.relative``
>>> +    Make paths in ``hg status`` output relative to the current directory.
>>> +    (default: False)
>>> +
>>>   ``update.requiredest``
>>>       Require that the user pass a destination when running ``hg update``.
>>>       For example, ``hg update .::`` will be allowed, but a plain ``hg
>>> update``
>>> diff -r 102f291807c9 -r e0e123324f20 tests/test-status.t
>>> --- a/tests/test-status.t       Mon Mar 20 16:34:12 2017 -0700
>>> +++ b/tests/test-status.t       Tue Mar 21 17:50:44 2017 -0700
>>> @@ -40,6 +40,20 @@
>>>     ? ../b/2/in_b_2
>>>     ? ../b/in_b
>>>     ? ../in_root
>>> +  $ hg --config commands.status.relative=True status --cwd a
>>> +  ? 1/in_a_1
>>> +  ? in_a
>>> +  ? ../b/1/in_b_1
>>> +  ? ../b/2/in_b_2
>>> +  ? ../b/in_b
>>> +  ? ../in_root
>>> +  $ HGPLAIN=1 hg --config commands.status.relative=True status --cwd a
>>> +  ? a/1/in_a_1
>>> +  ? a/in_a
>>> +  ? b/1/in_b_1
>>> +  ? b/2/in_b_2
>>> +  ? b/in_b
>>> +  ? in_root
>>>       $ hg status --cwd b
>>>     ? a/1/in_a_1
>>>
>>


More information about the Mercurial-devel mailing list