[PATCH stable] progress: disable progress when the terminal resembles cmd.exe (issue4801)
Augie Fackler
raf at durin42.com
Tue Mar 1 14:39:15 EST 2016
> On Mar 1, 2016, at 11:35, Augie Fackler <raf at durin42.com> wrote:
>
> # HG changeset patch
> # User Augie Fackler <augie at google.com>
> # Date 1456860899 18000
> # Tue Mar 01 14:34:59 2016 -0500
> # Branch stable
> # Node ID 30732f02af820e8851163e5ec177e3c3d038eb08
> # Parent 5f95d6a70e9b37bf11487580a5c750d861baa8f5
> # EXP-Topic progress-cmd
> progress: disable progress when the terminal resembles cmd.exe (issue4801)
I fail at patches, discard this and a v2 will follow soon.
>
> It appears that cmd.exe is hopelessly unreliable when it comes to
> handling carriage returns, based on my own web searching. The blessed
> mechanism for performing cursor positioning appears to be
> SetConsoleCursorPosition(), but I don't have easy access to a Windows
> machine, and we need a simple fix for stable anyway.
>
> Ideally, someone on Windows can write a fix for this and contribute it.
>
> diff --git a/mercurial/progress.py b/mercurial/progress.py
> --- a/mercurial/progress.py
> +++ b/mercurial/progress.py
> @@ -18,8 +18,17 @@ def spacejoin(*args):
> return ' '.join(s for s in args if s)
>
> def shouldprint(ui):
> - return not (ui.quiet or ui.plain()) and (
> - ui._isatty(sys.stderr) or ui.configbool('progress', 'assume-tty'))
> + if ui.configbool('progress', 'assume-tty'):
> + return True
> + if os.name == 'nt' and 'TERM' not in os.environ:
> + # We think this is cmd.exe, which means we're going to skip
> + # progress. It appears that carriage returns are unreliable
> + # for cursor positioning in cmd.exe, and that we should
> + # instead be using SetConsoleCursorPosition() to move the
> + # cursor for progress writes. See issue4801 for the report
> + # that revealed this problem.
> + return False
> + return not (ui.quiet or ui.plain()) and ui._isatty(sys.stderr)
>
> def fmtremaining(seconds):
> """format a number of remaining seconds in human readable way
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list