@ Ed.ward
私は最近、特定のファイルが変更された場合にのみ通知するためにこれを行う必要がありました(通知拡張機能と変更コンテキストを組み合わせる)。独自のフックから通知フックを呼び出すには、hgextをインポートしてから、hgext.notify.hookを呼び出す必要があります。私のPythonの動作例:
import re, traceback
import hgext
def check_changegroup(ui, repo, hooktype, node=None, source=None, **kwargs):
ui.note("Checking for files in %s with path: %s\n" % (repo.__class__.__name__, repo.root))
file_match = ".*base.*" #ui.config('monitor_files', 'file_match')
ui.note("file_match: %s\n" % file_match)
file_match_re = re.compile(file_match, re.I)
monitored_file_changed = False
for rev in xrange(repo[node].rev(), len(repo)):
changectx = repo[rev]
for f in changectx.files():
if file_match_re.match(f):
ui.note(" matched: %s\n" % f)
monitored_file_changed = True
if monitored_file_changed:
ui.note("rev: %s from user: %s has changes on monitored files\n" % (rev, changectx.user()))
if monitored_file_changed:
ui.note("calling notify hook\n")
try:
hgext.notify.hook(ui, repo, hooktype, node, source)
except Exception as exc:
ui.warn(('%s error calling notify hook: %s\n') % (exc.__class__.__name__, exc))
traceback.print_exc()
raise