Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 1880:05c7d75be925
fix broken environment save/restore when a hook runs.
move "run commend with different env/cwd" code out to function in util.
new function is called esystem.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Fri, 10 Mar 2006 22:24:19 -0800 |
parents | 5ac811b720de |
children | c0320567931f |
line wrap: on
line diff
--- a/mercurial/localrepo.py Fri Mar 10 20:06:41 2006 +0100 +++ b/mercurial/localrepo.py Fri Mar 10 22:24:19 2006 -0800 @@ -54,28 +54,8 @@ def hook(self, name, throw=False, **args): def runhook(name, cmd): self.ui.note(_("running hook %s: %s\n") % (name, cmd)) - old = {} - for k, v in args.items(): - k = k.upper() - old['HG_' + k] = os.environ.get(k, None) - old[k] = os.environ.get(k, None) - os.environ['HG_' + k] = str(v) - os.environ[k] = str(v) - - try: - # Hooks run in the repository root - olddir = os.getcwd() - os.chdir(self.root) - r = os.system(cmd) - finally: - for k, v in old.items(): - if v is not None: - os.environ[k] = v - else: - del os.environ[k] - - os.chdir(olddir) - + env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()]) + r = util.esystem(cmd, environ=env, cwd=self.root) if r: desc, r = util.explain_exit(r) if throw: @@ -231,7 +211,7 @@ self.opener("journal.dirstate", "w").write(ds) tr = transaction.transaction(self.ui.warn, self.opener, - self.join("journal"), + self.join("journal"), aftertrans(self.path)) self.transhandle = tr return tr