# HG changeset patch # User Yuya Nishihara # Date 2015-12-13 11:07:19 # Node ID 7e2495bf0ad8de820b519833635a9a90f0e9b23d # Parent 2ce4661ac226925f7505d598a28ef6d648bb4f86 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 @@ -462,12 +462,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):