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
--- 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