The ChangeLog timestamp comparison here is too fragile:
We should use os.utime() to synchronize the ChangeLog mtime with the commit time, and then regenerate the ChangeLog if its timestamp is not exactly identical to the last commit time. Relying on >= comparison introduces unnecessary fragility, since commit times come from committer's clocks which are not necessarily in sync.
There's a patch in the following branch:
I've posted it for review here:
This is in the master branch:
Fixed in 2.3.0.