[PATCH 1 of 3] pager: fix the invocation of `more` on Windows
Augie Fackler
raf at durin42.com
Tue Mar 21 20:26:40 EDT 2017
> On Mar 21, 2017, at 20:25, Matt Harbison <mharbison72 at gmail.com> wrote:
>
> On Tue, 21 Mar 2017 17:40:58 -0400, Jun Wu <quark at fb.com> wrote:
>
>> Excerpts from Augie Fackler's message of 2017-03-21 17:34:39 -0400:
>>> On Mon, Mar 20, 2017 at 12:53:17AM -0400, Matt Harbison wrote:
>>> > pager: fix the invocation of `more` on Windows
>>>
>>> I've taken this one. And I'm sad.
>>>
>>> (Thanks! I blame windows for the sadness, not you.)
>>
>> This does not look like a complete fix. Users setting "pager.pager=more", or
>> "pager.pager=somethingelse" will still have issues.
>
> You're correct about the former, but I don't understand the latter. It seems like *.com is the issue
Ugh.
> (I'm guessing cmd.exe handles it special, based on $PATHEXT). I tried with pager.pager=notepad, and pager.pager=C:\Progra~2\GnuWin32\bin\less, and it had no problem invoking either *.exe without the extension.
>
>> A better fix seems to be disable shell=False for Windows.
>
> I dunno. If shell=True, you get a cryptic error and nothing else with a bad pager. If shell=False, a bad pager is simply disabled with a warning, and normal output. That seems more friendly.
>
> Since I think we are in agreement that there will be a special case here in _some_ form, what I should have done is to translate more -> more.com *after* getting the config on Windows, instead of setting the default value. I doubt there are any other *.com pagers, and I don't think anyone is trying to page through a *.bat file or anything like that. (And if they want to do something crazy with these odd "executables", pager.pager="cmd.exe /c more" worked for me, so I assume it works for *.bat, etc.) IDK how many Windows users would even bother to configure `more`, but we should be able to make it work.
>
> I'll send V2 tomorrow, if there aren't any other comments before then.
This is good analysis - please include most/all of it in the v2 commit message for future archaeology. Thanks!
>
>>> >
>>> > After 9335dc6b2a9c, invoking `more` no longer works. Instead, a warning is
>>> > printed and the pager is disabled. Invoking `more.com` works.
More information about the Mercurial-devel
mailing list