# HG changeset patch # User Jason R. Coombs # Date 1454097224 18000 # Node ID bf1d5c223ac07f6677ff0519d6601d1b326555f7 # Parent d630eac3a5dbaf33a12e23d65abeff4d54df9f10 schemes: add debugexpandscheme command, resolving a scheme to canonical form diff -r d630eac3a5db -r bf1d5c223ac0 hgext/schemes.py --- 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') diff -r d630eac3a5db -r bf1d5c223ac0 tests/test-schemes.t --- 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