Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hook.py @ 7787:b8d750daadde
Introduce HG_PREPEND to solve pretxn races
- add writepending to flush delayed writes to separate file
- add support in hooks for lazy evaluation of callable parameters
- add HG_PENDING to pretxn hooks
- call writepending if hook is used
- pass repo root to hook environment
- if HG_PENDING = repo root, we're in pretxn hook
- read pending data to make pending changesets visible
- filter HG_PENDING in tests/printenv.py
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 16 Feb 2009 19:35:07 -0600 |
parents | 182b7114d35a |
children | f779e1996e23 |
comparison
equal
deleted
inserted
replaced
7786:92455c1d6f83 | 7787:b8d750daadde |
---|---|
68 ui.warn(_('warning: %s hook failed\n') % hname) | 68 ui.warn(_('warning: %s hook failed\n') % hname) |
69 return r | 69 return r |
70 | 70 |
71 def _exthook(ui, repo, name, cmd, args, throw): | 71 def _exthook(ui, repo, name, cmd, args, throw): |
72 ui.note(_("running hook %s: %s\n") % (name, cmd)) | 72 ui.note(_("running hook %s: %s\n") % (name, cmd)) |
73 env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()]) | 73 |
74 env = {} | |
75 for k, v in args.iteritems(): | |
76 if callable(v): | |
77 v = v() | |
78 env['HG_' + k.upper()] = v | |
79 | |
74 if repo: | 80 if repo: |
75 cwd = repo.root | 81 cwd = repo.root |
76 else: | 82 else: |
77 cwd = os.getcwd() | 83 cwd = os.getcwd() |
78 r = util.system(cmd, environ=env, cwd=cwd) | 84 r = util.system(cmd, environ=env, cwd=cwd) |