# HG changeset patch # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp> # Date 2015-08-13 06:07:07 # Node ID d08e7449ff2757aa217882d8b4bd635fe11fcbcd # Parent ba80894330903ac6101b0f0d5e1acd2170fb4ffc 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 @@ def clone(ui, peeropts, source, dest=Non 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 @@ Request to clone a single branch is resp 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