equal
deleted
inserted
replaced
63 if not hasattr(obj, '__call__'): |
63 if not hasattr(obj, '__call__'): |
64 raise util.Abort(_('%s hook is invalid ' |
64 raise util.Abort(_('%s hook is invalid ' |
65 '("%s" is not callable)') % |
65 '("%s" is not callable)') % |
66 (hname, funcname)) |
66 (hname, funcname)) |
67 try: |
67 try: |
|
68 # redirect IO descriptors the the ui descriptors so hooks that write |
|
69 # directly to these don't mess the command protocol when running through |
|
70 # the command server |
|
71 old = sys.stdout, sys.stderr, sys.stdin |
|
72 sys.stdout, sys.stderr, sys.stdin = ui.fout, ui.ferr, ui.fin |
|
73 |
68 r = obj(ui=ui, repo=repo, hooktype=name, **args) |
74 r = obj(ui=ui, repo=repo, hooktype=name, **args) |
69 except KeyboardInterrupt: |
75 except KeyboardInterrupt: |
70 raise |
76 raise |
71 except Exception, exc: |
77 except Exception, exc: |
72 if isinstance(exc, util.Abort): |
78 if isinstance(exc, util.Abort): |
77 '%s\n') % (hname, exc)) |
83 '%s\n') % (hname, exc)) |
78 if throw: |
84 if throw: |
79 raise |
85 raise |
80 ui.traceback() |
86 ui.traceback() |
81 return True |
87 return True |
|
88 finally: |
|
89 sys.stdout, sys.stderr, sys.stdin = old |
82 if r: |
90 if r: |
83 if throw: |
91 if throw: |
84 raise util.Abort(_('%s hook failed') % hname) |
92 raise util.Abort(_('%s hook failed') % hname) |
85 ui.warn(_('warning: %s hook failed\n') % hname) |
93 ui.warn(_('warning: %s hook failed\n') % hname) |
86 return r |
94 return r |