share: reload repo after adjusting it in postshare()
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 09 Nov 2018 10:46:02 -0800
changeset 40575 fb490d798be0
parent 40574 17f21047a232
child 40576 85bf93def065
share: reload repo after adjusting it in postshare() When sharing a repo that's using remotefilelog, the update that happens at the end of the `hg share` call does not see the remote repo path that's copied in hg.postshare(). This patch reloads the repo after hg.postshare() to address that. This changes a subrepo test case. Note that `hg share -U; hg co tip` worked there before, so I don't see see why `hg share` should fail. I also don't know what a "locally referenced subrepo". So maybe this is fixing a bug? Hopefully it's not breaking something someone actually cares about at least. Maybe someone who knows and cares about subrepos can review this. Differential Revision: https://phab.mercurial-scm.org/D5251
mercurial/hg.py
tests/test-remotefilelog-share.t
tests/test-subrepo-recursion.t
--- a/mercurial/hg.py	Fri Nov 09 09:36:16 2018 -0800
+++ b/mercurial/hg.py	Fri Nov 09 10:46:02 2018 -0800
@@ -270,6 +270,7 @@
     })
 
     postshare(srcrepo, r, defaultpath=defaultpath)
+    r = repository(ui, dest)
     _postshareupdate(r, update, checkout=checkout)
     return r
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-remotefilelog-share.t	Fri Nov 09 10:46:02 2018 -0800
@@ -0,0 +1,24 @@
+  $ . "$TESTDIR/remotefilelog-library.sh"
+
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > remotefilelog=
+  > share=
+  > EOF
+
+  $ hg init master
+  $ cd master
+  $ cat >> .hg/hgrc <<EOF
+  > [remotefilelog]
+  > server=True
+  > EOF
+  $ echo x > x
+  $ hg commit -qAm x
+
+  $ cd ..
+
+
+  $ hgcloneshallow ssh://user@dummy/master source --noupdate -q
+  $ hg share source dest
+  updating working directory
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-subrepo-recursion.t	Fri Nov 09 09:36:16 2018 -0800
+++ b/tests/test-subrepo-recursion.t	Fri Nov 09 10:46:02 2018 -0800
@@ -560,15 +560,16 @@
   update: 4 new changesets (update)
 
 Sharing a local repo without the locally referenced subrepo (i.e. it was never
-updated from null), fails the same as a clone operation.
+updated from null) works, but clone fails.
 
   $ hg --config progress.disable=True clone -U ../empty ../empty2
 
   $ hg --config extensions.share= --config progress.disable=True \
   >    share ../empty2 ../empty_share
   updating working directory
-  abort: repository $TESTTMP/empty2/foo not found!
-  [255]
+  sharing subrepo foo from $TESTTMP/empty/foo
+  sharing subrepo foo/bar from $TESTTMP/empty/foo/bar
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ hg --config progress.disable=True clone ../empty2 ../empty_clone
   updating to branch default