diff -r 821a89018f17 -r fc3fbca35085 mercurial/localrepo.py --- a/mercurial/localrepo.py Wed Oct 02 09:50:21 2013 +0200 +++ b/mercurial/localrepo.py Mon Oct 07 11:45:01 2013 -0700 @@ -2229,6 +2229,12 @@ # In other case we can safely update cache on disk. branchmap.updatecache(self.filtered('served')) def runhooks(): + # These hooks run when the lock releases, not when the + # transaction closes. So it's possible for the changelog + # to have changed since we last saw it. + if clstart >= len(self): + return + # forcefully update the on-disk branch cache self.ui.debug("updating the branch cache\n") self.hook("changegroup", node=hex(cl.node(clstart)),