The ChangeLog timestamp comparison here is too fragile: https://gitweb.gentoo.org/proj/portage.git/tree/bin/egencache?h=v2.2.28#n779 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: https://github.com/zmedico/portage/tree/bug_579292 I've posted it for review here: https://archives.gentoo.org/gentoo-portage-dev/message/431da9c1a6a26954967396ed0570e413
This is in the master branch: https://gitweb.gentoo.org/proj/portage.git/commit/?id=8e57a8b34cc552267dd987f744f04d021041c75b
Fixed in 2.3.0.