[PATCH stable] dispatch: restore old cwd after dispatch
Gregory Szorc
gregory.szorc at gmail.com
Wed Apr 23 03:35:16 UTC 2014
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1398223347 25200
# Tue Apr 22 20:22:27 2014 -0700
# Node ID cd65b532c59317be2f4efcceded822b9f63bd858
# Parent 86596bc8f89201f9abd294ff6e8f858c4c4788ac
dispatch: restore old cwd after dispatch
diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
--- a/mercurial/dispatch.py
+++ b/mercurial/dispatch.py
@@ -60,20 +60,24 @@ def dispatch(req):
(inst.args[1], inst.args[0]))
else:
ferr.write(_("hg: parse error: %s\n") % inst.args[0])
return -1
msg = ' '.join(' ' in a and repr(a) or a for a in req.args)
starttime = time.time()
ret = None
+ # _dispatch() may chdir(). For embeddable scenarios, revert so multiple
+ # calls to dispatch() work.
+ oldcwd = os.getcwd()
try:
ret = _runcatch(req)
return ret
finally:
+ os.chdir(oldcwd)
duration = time.time() - starttime
req.ui.log("commandfinish", "%s exited %s after %0.2f seconds\n",
msg, ret or 0, duration)
def _runcatch(req):
def catchterm(*args):
raise error.SignalInterrupt
More information about the Mercurial-devel
mailing list