D7784: progress: flush stderr after clearing
spectral (Kyle Lippincott)
phabricator at mercurial-scm.org
Thu Jan 2 20:30:45 EST 2020
spectral created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
On python3, ui.stderr is buffered, it seems, so we need to flush it to actually
get the progress bar off the screen. This is important since ui.write() will
call into progbar.clear() if it thinks there's a progress bar on the screen,
with the intent that the next thing it outputs is at the beginning of the line
(instead of at the end of the progress bar line). Without the flush, we buffer
up the clearing of the screen, and we get some really weird/corrupt output.
diff --git a/mercurial/progress.py b/mercurial/progress.py
@@ -193,6 +193,7 @@
if not self.printed or not self.lastprint or not shouldprint(self.ui):
self._writeerr(b'\r%s\r' % (b' ' * self.width()))
# force immediate re-paint of progress bar
self.lastprint = 0
To: spectral, #hg-reviewers
More information about the Mercurial-devel