diff mercurial/changegroup.py @ 26751:520defbc0335

hook: centralize passing HG_PENDING to external hook process This patch centralizes passing HG_PENDING to external hook process into '_exthook()'. To make in-memory changes visible to external hook process, this patch does: - write (or schedule to write) in-memory dirstate changes, and - set HG_PENDING environment variable, if: - a transaction is running, and - there are in-memory changes to be visible This patch tests some commands with some hooks, because transaction activity of a same hook differs from each other ("---": "not tested"). ======== ========= ========= ============ command preupdate precommit pretxncommit ======== ========= ========= ============ unshelve o --- --- backout x --- --- import --- o o qrefresh --- x o ======== ========= ========= ============ Each hooks are examined separately to prevent in-memory changes from being visible to external process accidentally by side effect of hooks previously invoked.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Sat, 17 Oct 2015 01:15:34 +0900
parents 04176eaf911b
children e7c618cee8df
line wrap: on
line diff
--- a/mercurial/changegroup.py	Sat Oct 17 01:15:34 2015 +0900
+++ b/mercurial/changegroup.py	Sat Oct 17 01:15:34 2015 +0900
@@ -407,15 +407,13 @@
             repo.invalidatevolatilesets()
 
             if changesets > 0:
-                p = lambda: tr.writepending() and repo.root or ""
                 if 'node' not in tr.hookargs:
                     tr.hookargs['node'] = hex(cl.node(clstart))
                     hookargs = dict(tr.hookargs)
                 else:
                     hookargs = dict(tr.hookargs)
                     hookargs['node'] = hex(cl.node(clstart))
-                repo.hook('pretxnchangegroup', throw=True, pending=p,
-                          **hookargs)
+                repo.hook('pretxnchangegroup', throw=True, **hookargs)
 
             added = [cl.node(r) for r in xrange(clstart, clend)]
             publishing = repo.publishing()