[PATCH STABLE] hg: avoid auto sharing when the clone destination is remote
Gregory Szorc
gregory.szorc at gmail.com
Thu Aug 13 08:30:31 CDT 2015
> On Aug 13, 2015, at 02:11, FUJIWARA Katsunori <foozy at lares.dti.ne.jp> wrote:
>
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1439446027 -32400
> # Thu Aug 13 15:07:07 2015 +0900
> # Branch stable
> # Node ID f036602935a851b0194ad253d6f3d6adf5c83d98
> # Parent d815a5997576f0ef730e1df2d43c68970643c46b
> hg: avoid auto sharing when the clone destination is remote
>
> Before this patch, when auto sharing is enabled, 'hg.clone()' tries to
> create local clone regardless of locality of the clone destination on
> the host, and causes failure.
>
> To avoid auto sharing when the clone destination is remote, this patch
> adds examination of 'islocal(dest)' before auto sharing in
> 'hg.clone()'.
>
> 'islocal(dest)' is examined after 'sharepool', because:
>
> - the former is more expensive than the latter
> - without enabling share extension, the later is always negative
>
> diff --git a/mercurial/hg.py b/mercurial/hg.py
> --- a/mercurial/hg.py
> +++ b/mercurial/hg.py
> @@ -404,7 +404,7 @@
> shareopts = shareopts or {}
> sharepool = shareopts.get('pool')
> sharenamemode = shareopts.get('mode')
> - if sharepool:
> + if sharepool and islocal(dest):
> sharepath = None
> if sharenamemode == 'identity':
> # Resolve the name from the initial changeset in the remote
> diff --git a/tests/test-clone.t b/tests/test-clone.t
> --- a/tests/test-clone.t
> +++ b/tests/test-clone.t
> @@ -1013,3 +1013,15 @@
> adding remote bookmark bookA
>
> $ ls share-1anowc
> +
> +Test that auto sharing doesn't cause failure of "hg clone local remote"
> +
> + $ cd $TESTTMP
> + $ hg -R a id -r 0
> + acb14030fe0a
> + $ hg id -R remote -r 0
> + abort: there is no Mercurial repository here (.hg not found)
> + [255]
> + $ hg --config share.pool=share -q clone -e "python \"$TESTDIR/dummyssh\"" a ssh://user@dummy/remote
> + $ hg -R remote id -r 0
> + acb14030fe0a
Good catch! One suggestion (and I may be wrong about this since I'm not in front of a computer), I think the test should live next to the existing share pool tests, which I *think* are in test-share.t or some such. Other than that, LGTM.
More information about the Mercurial-devel
mailing list