# HG changeset patch # User Siddharth Agarwal # Date 1444864411 25200 # Node ID a930d66a04af7105a546c6a340c1065d0130eebe # Parent 143b52fce68e5080db4ccb022bc859ae3e65de4e hook: factor out determination of hooks from running them This will allow other code to run a predetermined series of hooks. diff -r 143b52fce68e -r a930d66a04af mercurial/hook.py --- 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()