Submitter | Yuya Nishihara |
---|---|
Date | Dec. 17, 2015, 2:09 p.m. |
Message ID | <a3a19a652fe6c25703a5.1450361365@mimosa> |
Download | mbox | patch |
Permalink | /patch/12100/ |
State | Accepted |
Headers | show |
Comments
On Thu, Dec 17, 2015 at 11:09:25PM +0900, Yuya Nishihara wrote: > # HG changeset patch > # User Yuya Nishihara <yuya@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() Queued these, thanks > > 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): > > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@selenic.com > https://selenic.com/mailman/listinfo/mercurial-devel
Patch
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):