addchangegroup: use a postrelease callback to call changegroup hook
This is will allow addchangegroup to drop lock related code.
--- a/mercurial/localrepo.py Mon Nov 28 15:05:26 2011 +0100
+++ b/mercurial/localrepo.py Mon Nov 28 01:18:15 2011 +0100
@@ -2003,21 +2003,24 @@
cl.finalize(trp)
tr.close()
+
+ def postaddchangegroup():
+ if changesets > 0:
+ # forcefully update the on-disk branch cache
+ self.ui.debug("updating the branch cache\n")
+ self.updatebranchcache()
+ self.hook("changegroup", node=hex(cl.node(clstart)),
+ source=srctype, url=url)
+
+ for n in added:
+ self.hook("incoming", node=hex(n), source=srctype,
+ url=url)
+ self._postrelease(postaddchangegroup)
+
finally:
tr.release()
if lock:
lock.release()
-
- if changesets > 0:
- # forcefully update the on-disk branch cache
- self.ui.debug("updating the branch cache\n")
- self.updatebranchcache()
- self.hook("changegroup", node=hex(cl.node(clstart)),
- source=srctype, url=url)
-
- for n in added:
- self.hook("incoming", node=hex(n), source=srctype, url=url)
-
# never return 0 here:
if dh < 0:
return dh - 1