schemes: add debugexpandscheme command, resolving a scheme to canonical form
authorJason R. Coombs <jaraco@jaraco.com>
Fri, 29 Jan 2016 14:53:44 -0500
changeset 27982 bf1d5c223ac0
parent 27981 d630eac3a5db
child 27983 b7af616ca675
schemes: add debugexpandscheme command, resolving a scheme to canonical form
hgext/schemes.py
tests/test-schemes.t
--- a/hgext/schemes.py	Fri Jan 29 14:40:41 2016 -0500
+++ b/hgext/schemes.py	Fri Jan 29 14:53:44 2016 -0500
@@ -41,9 +41,11 @@
 """
 
 import os, re
-from mercurial import extensions, hg, templater, util, error
+from mercurial import extensions, hg, templater, util, error, cmdutil
 from mercurial.i18n import _
 
+cmdtable = {}
+command = cmdutil.command(cmdtable)
 # Note for extension authors: ONLY specify testedwith = 'internal' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
@@ -109,3 +111,12 @@
         hg.schemes[scheme] = ShortRepository(url, scheme, t)
 
     extensions.wrapfunction(util, 'hasdriveletter', hasdriveletter)
+
+@command('debugexpandscheme', norepo=True)
+def expandscheme(ui, url, **opts):
+    """given a repo path, provide the scheme-expanded path
+    """
+    repo = hg._peerlookup(url)
+    if isinstance(repo, ShortRepository):
+        url = repo.resolve(url)
+    ui.write(url + '\n')
--- a/tests/test-schemes.t	Fri Jan 29 14:40:41 2016 -0500
+++ b/tests/test-schemes.t	Fri Jan 29 14:53:44 2016 -0500
@@ -52,6 +52,21 @@
   no changes found
   [1]
 
+check that debugexpandscheme outputs the canonical form
+
+  $ hg debugexpandscheme bb://user/repo
+  https://bitbucket.org/user/repo
+
+expanding an unknown scheme emits the input
+
+  $ hg debugexpandscheme foobar://this/that
+  foobar://this/that
+
+expanding a canonical URL emits the input
+
+  $ hg debugexpandscheme https://bitbucket.org/user/repo
+  https://bitbucket.org/user/repo
+
 errors
 
   $ cat errors.log