hook: factor out determination of hooks from running them
This will allow other code to run a predetermined series of hooks.
--- a/mercurial/hook.py Tue Mar 10 13:19:17 2015 +0100
+++ b/mercurial/hook.py Wed Oct 14 16:13:31 2015 -0700
@@ -162,14 +162,19 @@
if not ui.callhooks:
return False
+ hooks = []
+ for hname, cmd in _allhooks(ui):
+ if hname.split('.')[0] == name and cmd:
+ hooks.append((hname, cmd))
+
+ return runhooks(ui, repo, name, hooks, throw=throw, **args)
+
+def runhooks(ui, repo, name, hooks, throw=False, **args):
r = False
oldstdout = -1
try:
- for hname, cmd in _allhooks(ui):
- if hname.split('.')[0] != name or not cmd:
- continue
-
+ for hname, cmd in hooks:
if oldstdout == -1 and _redirect:
try:
stdoutno = sys.__stdout__.fileno()