[PATCH STABLE] hg: avoid auto sharing when the clone destination is remote
FUJIWARA Katsunori
foozy at lares.dti.ne.jp
Thu Aug 13 17:58:04 CDT 2015
At Thu, 13 Aug 2015 09:30:31 -0400,
Gregory Szorc wrote:
>
>
>
> > 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.
At first, I also thought putting this test into test-share.t, but it
and any other *.t don't test auto sharing, but test-clone.t does :-)
----------------------------------------------------------------------
[FUJIWARA Katsunori] foozy at lares.dti.ne.jp
More information about the Mercurial-devel
mailing list