[PATCH 3 of 3 STABLE] clone: process 'lookup' return as an arbitrary symbol
Yuya Nishihara
yuya at tcha.org
Thu Jul 26 09:06:47 EDT 2018
On Thu, 26 Jul 2018 14:21:20 +0200, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1532595350 -7200
> # Thu Jul 26 10:55:50 2018 +0200
> # Branch stable
> # Node ID 88a0bf46a3ffb78aaab203d13a7c9f53e244282b
> # Parent a920f2620726ef26e6caed3d72b24297699b5b39
> # EXP-Topic compat-hggit
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 88a0bf46a3ff
> clone: process 'lookup' return as an arbitrary symbol
>
> In theory, checkout is expected to be a node here because it was returned by
> peer.lookup.
>
> In practice, multiple important extensions (like hg-git, hg-subversion) use
> peers not backed by a mercurial repository where lookup cannot return a node.
>
> Allowing arbitrary symbols is necessary to make these extensions working with
> 4.7.
>
> We should probably introduce a new API in Core to have these extensions to
> work without abusing the lookup API. In the meantime, a small change to
> restore compatibility in 4.7 seems in order.
>
> diff --git a/mercurial/hg.py b/mercurial/hg.py
> --- a/mercurial/hg.py
> +++ b/mercurial/hg.py
> @@ -730,6 +730,19 @@ def clone(ui, peeropts, source, dest=Non
>
> uprev = None
> status = None
> + if checkout is not None and not node.isnode(checkout):
IIUC, hggit/hgsubversion may pass in a 20-length symbolic name?
> + # checkout was expected to be a node here because it was
> + # returned by peer.lookup.
> + #
> + # However, some extension (like hg-git) introduce peer not
> + # backed by a mercurial repository where lookup cannot
> + # return a node. Processing 'checkout' as an arbitrary
> + # symbols make it possible with these extensions keep
> + # working.
> + if scmutil.isrevsymbol(destrepo, checkout):
> + checkout = scmutil.revsymbol(destrepo, checkout).node()
> + else:
> + checkout = None
Do you have any plan to deprecate this hack?
More information about the Mercurial-devel
mailing list