diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -291,16 +291,16 @@ class changectx(object): try: return self._manifest[path], self._manifest.flags(path) except KeyError: - raise error.LookupError(self._node, path, - _('not found in manifest')) + raise error.ManifestLookupError(self._node, path, + _('not found in manifest')) if '_manifestdelta' in self.__dict__ or path in self.files(): if path in self._manifestdelta: return (self._manifestdelta[path], self._manifestdelta.flags(path)) node, flag = self._repo.manifest.find(self._changeset[0], path) if not node: - raise error.LookupError(self._node, path, - _('not found in manifest')) + raise error.ManifestLookupError(self._node, path, + _('not found in manifest')) return node, flag diff --git a/mercurial/error.py b/mercurial/error.py --- a/mercurial/error.py +++ b/mercurial/error.py @@ -27,6 +27,9 @@ class LookupError(RevlogError, KeyError) def __str__(self): return RevlogError.__str__(self) +class ManifestLookupError(LookupError): + pass + class CommandError(Exception): """Exception raised on errors in parsing the command line.""" diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -245,7 +245,8 @@ class hgweb(object): except (error.LookupError, error.RepoLookupError), err: req.respond(HTTP_NOT_FOUND, ctype) msg = str(err) - if util.safehasattr(err, 'name') and 'manifest' not in msg: + if (util.safehasattr(err, 'name') and + not isinstance(err, error.ManifestLookupError)): msg = 'revision not found: %s' % err.name return tmpl('error', error=msg) except (error.RepoError, error.RevlogError), inst: