changeset 26026:d08e7449ff27 stable

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
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Thu, 13 Aug 2015 15:07:07 +0900
parents ba8089433090
children 7b7e25a85f63
files mercurial/hg.py tests/test-clone.t
diffstat 2 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hg.py	Wed Aug 12 12:26:39 2015 -0400
+++ b/mercurial/hg.py	Thu Aug 13 15:07:07 2015 +0900
@@ -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
--- a/tests/test-clone.t	Wed Aug 12 12:26:39 2015 -0400
+++ b/tests/test-clone.t	Thu Aug 13 15:07:07 2015 +0900
@@ -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