changeset 7345:daf282efa2da

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.
author Mads Kiilerich <mads@kiilerich.com>
date Sun, 05 Aug 2018 23:16:43 +0200
parents b6b3c6dc49aa
children 86b16171af1f
files kallithea/lib/vcs/backends/hg/repository.py
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/lib/vcs/backends/hg/repository.py	Sun Aug 05 23:16:23 2018 +0200
+++ b/kallithea/lib/vcs/backends/hg/repository.py	Sun Aug 05 23:16:43 2018 +0200
@@ -422,11 +422,16 @@
         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 @@
             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.