# HG changeset patch # User Mads Kiilerich # Date 2018-08-05 23:16:43 # Node ID daf282efa2da3b8f2f244988cb62620465731cb2 # Parent b6b3c6dc49aa4cedf88591a5c30b3fbcb163117b hg: be more strict about which kinds of revision lookup we want from hg Comply with https://www.mercurial-scm.org/repo/hg/file/4.6/mercurial/context.py#l380 to support recent Mercurial versions. diff --git a/kallithea/lib/vcs/backends/hg/repository.py b/kallithea/lib/vcs/backends/hg/repository.py --- a/kallithea/lib/vcs/backends/hg/repository.py +++ b/kallithea/lib/vcs/backends/hg/repository.py @@ -422,11 +422,16 @@ class MercurialRepository(BaseRepository if self._empty: raise EmptyRepositoryError("There are no changesets yet") - if revision in [-1, 'tip', None]: + if revision in [-1, None]: revision = 'tip' try: - revision = self._repo[revision].hex() + if isinstance(revision, int): + return self._repo[revision].hex() + try: + return scmutil.revsymbol(self._repo, revision).hex() + except AttributeError: # revsymbol was introduced in Mercurial 4.6 + return self._repo[revision].hex() except (IndexError, ValueError, RepoLookupError, TypeError): msg = ("Revision %s does not exist for %s" % (revision, self)) raise ChangesetDoesNotExistError(msg) @@ -434,8 +439,6 @@ class MercurialRepository(BaseRepository msg = ("Ambiguous identifier `%s` for %s" % (revision, self)) raise ChangesetDoesNotExistError(msg) - return revision - def get_ref_revision(self, ref_type, ref_name): """ Returns revision number for the given reference.