# HG changeset patch # User Pierre-Yves David # Date 1322439495 -3600 # Node ID 9df9444e96ec6df9f870cdcfb338e33c025841cd # Parent 926a06f7a353c82a0bfb9416440857a06a9c9535 addchangegroup: use a postrelease callback to call changegroup hook This is will allow addchangegroup to drop lock related code. diff -r 926a06f7a353 -r 9df9444e96ec mercurial/localrepo.py --- 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