Skip to content
Snippets Groups Projects
Commit 196b05a5 authored by Jesse Long's avatar Jesse Long
Browse files

hooks: restore io correctly on exception

parent 6163ef93
No related branches found
No related tags found
No related merge requests found
......@@ -96,19 +96,20 @@
oldstdout = os.dup(sys.__stdout__.fileno())
os.dup2(sys.__stderr__.fileno(), sys.__stdout__.fileno())
for hname, cmd in util.sort(ui.configitems('hooks')):
if hname.split('.')[0] != name or not cmd:
continue
if callable(cmd):
r = _pythonhook(ui, repo, name, hname, cmd, args, throw) or r
elif cmd.startswith('python:'):
r = _pythonhook(ui, repo, name, hname, cmd[7:].strip(),
args, throw) or r
else:
r = _exthook(ui, repo, hname, cmd, args, throw) or r
if _redirect:
os.dup2(oldstdout, sys.__stdout__.fileno())
os.close(oldstdout)
try:
for hname, cmd in util.sort(ui.configitems('hooks')):
if hname.split('.')[0] != name or not cmd:
continue
if callable(cmd):
r = _pythonhook(ui, repo, name, hname, cmd, args, throw) or r
elif cmd.startswith('python:'):
r = _pythonhook(ui, repo, name, hname, cmd[7:].strip(),
args, throw) or r
else:
r = _exthook(ui, repo, hname, cmd, args, throw) or r
finally:
if _redirect:
os.dup2(oldstdout, sys.__stdout__.fileno())
os.close(oldstdout)
return r
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment