--- a/hgext/convert/cvs.py Tue Oct 30 22:14:15 2007 +0100
+++ b/hgext/convert/cvs.py Thu Nov 01 12:37:17 2007 +0100
@@ -46,14 +46,13 @@
cmd = '%s -d "1970/01/01 00:00:01" -d "%s"' % (cmd, self.rev)
except util.Abort:
raise util.Abort('revision %s is not a patchset number or date' % self.rev)
- cmd += " 2>&1"
d = os.getcwd()
try:
os.chdir(self.path)
id = None
state = 0
- for l in os.popen(cmd):
+ for l in util.popen(cmd):
if state == 0: # header
if l.startswith("PatchSet"):
id = l[9:-2]
--- a/hgext/convert/darcs.py Tue Oct 30 22:14:15 2007 +0100
+++ b/hgext/convert/darcs.py Thu Nov 01 12:37:17 2007 +0100
@@ -67,9 +67,9 @@
cmdline += args
cmdline = [util.shellquote(arg) for arg in cmdline]
cmdline += ['<', util.nulldev]
- cmdline = util.quotecommand(' '.join(cmdline))
+ cmdline = ' '.join(cmdline)
self.ui.debug(cmdline, '\n')
- return os.popen(cmdline, 'r')
+ return util.popen(cmdline)
def run(self, cmd, *args, **kwargs):
fp = self._run(cmd, *args, **kwargs)
--- a/hgext/convert/git.py Tue Oct 30 22:14:15 2007 +0100
+++ b/hgext/convert/git.py Thu Nov 01 12:37:17 2007 +0100
@@ -14,7 +14,7 @@
prevgitdir = os.environ.get('GIT_DIR')
os.environ['GIT_DIR'] = self.path
try:
- return os.popen(s)
+ return util.popen(s)
finally:
if prevgitdir is None:
del os.environ['GIT_DIR']
@@ -22,7 +22,7 @@
os.environ['GIT_DIR'] = prevgitdir
else:
def gitcmd(self, s):
- return os.popen('GIT_DIR=%s %s' % (self.path, s))
+ return util.popen('GIT_DIR=%s %s' % (self.path, s))
def __init__(self, ui, path, rev=None):
super(convert_git, self).__init__(ui, path, rev=rev)
@@ -45,8 +45,7 @@
def catfile(self, rev, type):
if rev == "0" * 40: raise IOError()
- fh = self.gitcmd("git-cat-file %s %s 2>%s" % (type, rev,
- util.nulldev))
+ fh = self.gitcmd("git-cat-file %s %s" % (type, rev))
return fh.read()
def getfile(self, name, rev):
@@ -111,8 +110,7 @@
def gettags(self):
tags = {}
- fh = self.gitcmd('git-ls-remote --tags "%s" 2>%s' % (self.path,
- util.nulldev))
+ fh = self.gitcmd('git-ls-remote --tags "%s"' % self.path)
prefix = 'refs/tags/'
for line in fh:
line = line.strip()
--- a/mercurial/httprepo.py Tue Oct 30 22:14:15 2007 +0100
+++ b/mercurial/httprepo.py Thu Nov 01 12:37:17 2007 +0100
@@ -256,7 +256,7 @@
if user:
ui.debug(_('http auth: user %s, password %s\n') %
(user, passwd and '*' * len(passwd) or 'not set'))
- passmgr.add_password(None, self._url, user, passwd or '')
+ passmgr.add_password(None, host, user, passwd or '')
handlers.extend((urllib2.HTTPBasicAuthHandler(passmgr),
httpdigestauthhandler(passmgr)))
--- a/mercurial/patch.py Tue Oct 30 22:14:15 2007 +0100
+++ b/mercurial/patch.py Thu Nov 01 12:37:17 2007 +0100
@@ -249,7 +249,7 @@
fuzz = False
if cwd:
args.append('-d %s' % util.shellquote(cwd))
- fp = os.popen('%s %s -p%d < %s' % (patcher, ' '.join(args), strip,
+ fp = util.popen('%s %s -p%d < %s' % (patcher, ' '.join(args), strip,
util.shellquote(patchname)))
for line in fp:
--- a/mercurial/util.py Tue Oct 30 22:14:15 2007 +0100
+++ b/mercurial/util.py Thu Nov 01 12:37:17 2007 +0100
@@ -1011,6 +1011,13 @@
# through the current COMSPEC. cmd.exe suppress enclosing quotes.
return '"' + cmd + '"'
+ def popen(command):
+ # Work around "popen spawned process may not write to stdout
+ # under windows"
+ # http://bugs.python.org/issue1366
+ command += " 2> %s" % nulldev
+ return os.popen(quotecommand(command))
+
def explain_exit(code):
return _("exited with status %d") % code, code
@@ -1168,6 +1175,9 @@
def quotecommand(cmd):
return cmd
+ def popen(command):
+ return os.popen(command)
+
def testpid(pid):
'''return False if pid dead, True if running or not sure'''
if os.sys.platform == 'OpenVMS':
--- a/mercurial/version.py Tue Oct 30 22:14:15 2007 +0100
+++ b/mercurial/version.py Thu Nov 01 12:37:17 2007 +0100
@@ -50,7 +50,7 @@
"""Store version information."""
global remembered_version
if not version and os.path.isdir(".hg"):
- f = os.popen("hg identify 2> %s" % util.nulldev) # use real hg installation
+ f = util.popen("hg identify") # use real hg installation
ident = f.read()[:-1]
if not f.close() and ident:
ids = ident.split(' ', 1)