when pushing a bookmark change with no new changesets, hooks see an empty repo.
if no changesets are pushed, no changelog.a are written. changelog.readpending sets the changelog as empty instead of being a nop.
Fixed by http://selenic.com/repo/hg/rev/8678b1eafbcf Pierre-Yves David <pierre-yves.david@fb.com> changelog: fix readpending if no pending data exist (issue4609) Since transaction are used for more than just changesets, it is possible to have a transaction without new changesets at all. In this case no ''00changelog.i.a' are written. In all cases the 'changelog.readpending' method is called if the repository has any pending data. The 'revlog' logic provides empty content if the file is missing, so the whole operation resulted in an empty changelog. We now skip reading the pending file if it is missing. (please test the fix)