share: always set default path to work with subrepos (issue3518)
authorsimon@laptop-tosh
Sat, 27 Oct 2012 12:38:59 +0200
changeset 17938 fd903f89e42b
parent 17937 3cb032d50447
child 17948 bc75638bea78
share: always set default path to work with subrepos (issue3518) set the default path in any case because creating subrepo looks this up. Subrepos are cloned, not shared.
mercurial/hg.py
tests/test-subrepo.t
--- a/mercurial/hg.py	Sat Nov 03 10:40:36 2012 +0100
+++ b/mercurial/hg.py	Sat Oct 27 12:38:59 2012 +0200
@@ -171,11 +171,14 @@
     r = repository(ui, root)
 
     default = srcrepo.ui.config('paths', 'default')
-    if default:
-        fp = r.opener("hgrc", "w", text=True)
-        fp.write("[paths]\n")
-        fp.write("default = %s\n" % default)
-        fp.close()
+    if not default:
+        # set default to source for being able to clone subrepos
+        default = os.path.abspath(util.urllocalpath(origsource))
+    fp = r.opener("hgrc", "w", text=True)
+    fp.write("[paths]\n")
+    fp.write("default = %s\n" % default)
+    fp.close()
+    r.ui.setconfig('paths', 'default', default)
 
     if update:
         r.ui.status(_("updating working directory\n"))
--- a/tests/test-subrepo.t	Sat Nov 03 10:40:36 2012 +0100
+++ b/tests/test-subrepo.t	Sat Oct 27 12:38:59 2012 +0200
@@ -718,6 +718,14 @@
   committing subrepository subrepo-2
   $ hg st subrepo-2/file
 
+Check that share works with subrepo
+  $ hg --config extensions.share= share . ../shared
+  updating working directory
+  cloning subrepo subrepo-2 from $TESTTMP/subrepo-status/subrepo-2
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ test -f ../shared/subrepo-1/.hg/sharedpath
+  [1]
+
 Check hg update --clean
   $ cd $TESTTMP/t
   $ rm -r t/t.orig