In terms of current a/c/m attributes and usage of files() after some thinking i believe that usage of
localrepo.status() would be much better.
For example
hg st --change REV gives You modified, added, removed, deleted files for that REV, thus making merge changes same as in diff.
And it's much faster than current try except solution.
Reference: https://bitbucket.org/marcinkuzminski/vcs/issues/35/