diff mercurial/cmdutil.py @ 27416:9d04b4da6773

export: do not print '<fdopen>' as an output filename Because makefileobj() duplicates or wraps stdout, "fp != sys.stdout" didn't work correctly. Python doc states that special file objects are named in the form '<...>', and absolute filenames should never start with '<', we can ignore names start with '<'. We can't test fp.fileno() because fp may be a command-server channel. https://docs.python.org/2.7/library/stdtypes.html#file.name In the test output, "exporting patch:" line is printed after patch content. This is caused by fdopen() and will be fixed by the subsequent patch.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 13 Dec 2015 19:47:46 +0900
parents c84a07530040
children 9073a1e457c9
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Sun Dec 13 19:32:01 2015 +0900
+++ b/mercurial/cmdutil.py	Sun Dec 13 19:47:46 2015 +0900
@@ -1056,7 +1056,7 @@
                              modemap=filemode)
             if fp != template:
                 shouldclose = True
-        if fp and fp != sys.stdout and util.safehasattr(fp, 'name'):
+        if fp and not getattr(fp, 'name', '<unnamed>').startswith('<'):
             repo.ui.note("%s\n" % fp.name)
 
         if not fp: