diff -r e0d00ec2d614 -r f8f61cf246f5 mercurial/registrar.py --- a/mercurial/registrar.py Wed Jan 02 10:31:14 2019 +0100 +++ b/mercurial/registrar.py Wed Jan 02 21:49:40 2019 -0500 @@ -80,11 +80,11 @@ current one, or a ProgrammmingError is raised. Additionally, the types of the two registrars must match. """ - if type(self) != type(registrarbase): + if not isinstance(registrarbase, type(self)): msg = "cannot merge different types of registrar" raise error.ProgrammingError(msg) - dups = set(registrarbase._table.keys()).intersection(self._table.keys()) + dups = set(registrarbase._table).intersection(self._table) if dups: msg = 'duplicate registration for names: "%s"' % '", "'.join(dups)