changeset 8918:da519b9782e8 stable

hg: support Mercurial 6.1 without util.url
author Mads Kiilerich <mads@kiilerich.com>
date Mon, 07 Mar 2022 17:47:13 +0100
parents 017595560fc1
children c63a982b2e6c
files kallithea/lib/vcs/backends/git/repository.py kallithea/lib/vcs/backends/hg/repository.py kallithea/lib/vcs/utils/helpers.py
diffstat 3 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/lib/vcs/backends/git/repository.py	Tue Sep 28 14:00:08 2021 +0200
+++ b/kallithea/lib/vcs/backends/git/repository.py	Mon Mar 07 17:47:13 2022 +0100
@@ -19,7 +19,12 @@
 import urllib.request
 from collections import OrderedDict
 
-import mercurial.util  # import url as hg_url
+
+try:
+    from mercurial.utils.urlutil import url as hg_url
+except ImportError:  # urlutil was introduced in Mercurial 5.8
+    from mercurial.util import url as hg_url
+
 from dulwich.client import SubprocessGitClient
 from dulwich.config import ConfigFile
 from dulwich.objects import Tag
@@ -226,7 +231,7 @@
         if parsed_url.scheme not in ['http', 'https']:
             raise urllib.error.URLError("Unsupported protocol in URL %r" % url)
 
-        url_obj = mercurial.util.url(safe_bytes(url))
+        url_obj = hg_url(safe_bytes(url))
         test_uri, handlers = get_urllib_request_handlers(url_obj)
         if not test_uri.endswith(b'info/refs'):
             test_uri = test_uri.rstrip(b'/') + b'/info/refs'
--- a/kallithea/lib/vcs/backends/hg/repository.py	Tue Sep 28 14:00:08 2021 +0200
+++ b/kallithea/lib/vcs/backends/hg/repository.py	Mon Mar 07 17:47:13 2022 +0100
@@ -34,7 +34,12 @@
 import mercurial.tags
 import mercurial.ui
 import mercurial.unionrepo
-import mercurial.util
+
+
+try:
+    from mercurial.utils.urlutil import url as hg_url
+except ImportError:  # urlutil was introduced in Mercurial 5.8
+    from mercurial.util import url as hg_url
 
 from kallithea.lib.vcs.backends.base import BaseRepository, CollectionGenerator
 from kallithea.lib.vcs.exceptions import (BranchDoesNotExistError, ChangesetDoesNotExistError, EmptyRepositoryError, RepositoryError, TagAlreadyExistError,
@@ -336,7 +341,7 @@
         if '+' in parsed_url.scheme:  # strip 'git+' for hg-git URLs
             url = url.split(b'+', 1)[1]
 
-        url_obj = mercurial.util.url(url)
+        url_obj = hg_url(url)
         test_uri, handlers = get_urllib_request_handlers(url_obj)
 
         url_obj.passwd = b'*****'
--- a/kallithea/lib/vcs/utils/helpers.py	Tue Sep 28 14:00:08 2021 +0200
+++ b/kallithea/lib/vcs/utils/helpers.py	Mon Mar 07 17:47:13 2022 +0100
@@ -245,7 +245,7 @@
     if authinfo:
         # authinfo is a tuple (realm, uris, user, password) where 'uris' itself
         # is a tuple of URIs.
-        # If url_obj is obtained via mercurial.util.url, the obtained authinfo
+        # If url_obj is obtained via mercurial urlutil, the obtained authinfo
         # values will be bytes, e.g.
         #    (None, (b'http://127.0.0.1/repo', b'127.0.0.1'), b'user', b'pass')
         # However, urllib expects strings, not bytes, so we must convert them.