extdiff: refactor logic which does diff of patches
The current extdiff code is hard to understand on first look. Took me few hours
to grasp the code. Before adding more things, decided to do some refactoring.
Differential Revision: https://phab.mercurial-scm.org/D8686
# Dummy extension to define a namespace containing revision names
from __future__ import absolute_import
from mercurial import namespaces
def reposetup(ui, repo):
names = {b'r%d' % rev: repo[rev].node() for rev in repo}
namemap = lambda r, name: names.get(name)
nodemap = lambda r, node: [b'r%d' % repo[node].rev()]
ns = namespaces.namespace(
b'revnames',
templatename=b'revname',
logname=b'revname',
listnames=lambda r: names.keys(),
namemap=namemap,
nodemap=nodemap,
)
repo.names.addnamespace(ns)