[PATCH 5 of 5] cmdutil: do not duplicate stdout by makefileobj()
Yuya Nishihara
yuya at tcha.org
Thu Dec 17 08:09:25 CST 2015
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1450004839 -32400
# Sun Dec 13 20:07:19 2015 +0900
# Node ID a3a19a652fe6c25703a5f09be8192ecc5dda013d
# Parent 41f488a682b0c9be578244fd4e95ba7ae09f796f
cmdutil: do not duplicate stdout by makefileobj()
It made output order unpredictable because two separate buffers are flushed
individually. Let's use a thin wrapper that just sends close() to black hole.
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -461,12 +461,7 @@ def makefileobj(repo, pat, node=None, de
fp = repo.ui.fout
else:
fp = repo.ui.fin
- if util.safehasattr(fp, 'fileno'):
- return os.fdopen(os.dup(fp.fileno()), mode)
- else:
- # if this fp can't be duped properly, return
- # a dummy object that can be closed
- return _unclosablefile(fp)
+ return _unclosablefile(fp)
if util.safehasattr(pat, 'write') and writable:
return pat
if util.safehasattr(pat, 'read') and 'r' in mode:
diff --git a/tests/test-export.t b/tests/test-export.t
--- a/tests/test-export.t
+++ b/tests/test-export.t
@@ -140,6 +140,7 @@ Exporting revision -2 to a file:
No filename should be printed if stdout is specified explicitly:
$ hg export -v 1 -o -
+ exporting patch:
# HG changeset patch
# User test
# Date 0 0
@@ -154,7 +155,6 @@ No filename should be printed if stdout
@@ -1,1 +1,2 @@
foo-0
+foo-1
- exporting patch:
Checking if only alphanumeric characters are used in the file name (%m option):
More information about the Mercurial-devel
mailing list