Change standard streams mode to binary at hg startup
Standard streams are expected to operate in binary mode everywhere, especially with archive, cat, diff and export commands. Rewriting these to separate informational output from binary content is complicated to do and to maintain, nonwithstanding mode switching reliability. Changing all output mode to binary should not have much impact on Windows were stream processing tools are barely used and usually cope with unix style endings.
Streams mode being process wide, the switch is performed in the startup script to avoid polluting existing API users who may have solved this issue already or ignored it at least for the mercurial part.
#!/usr/bin/env python
from mercurial import demandimport
demandimport.enable()
import re
rsub = re.sub
def f(obj):
l = repr(obj)
l = rsub("0x[0-9a-fA-F]+", "0x?", l)
l = rsub("from '.*'", "from '?'", l)
return l
import os
print "os =", f(os)
print "os.system =", f(os.system)
print "os =", f(os)
import mercurial.version
print "mercurial.version =", f(mercurial.version)
print "mercurial.version.get_version =", f(mercurial.version.get_version)
print "mercurial.version =", f(mercurial.version)
print "mercurial =", f(mercurial)
from mercurial import util
print "util =", f(util)
print "util.system =", f(util.system)
print "util =", f(util)
print "util.system =", f(util.system)
import re as fred
print "fred =", f(fred)
import sys as re
print "re =", f(re)
print "fred =", f(fred)
print "fred.sub =", f(fred.sub)
print "fred =", f(fred)
print "re =", f(re)
print "re.stdout =", f(re.stdout)
print "re =", f(re)