# HG changeset patch # User Martin von Zweigbergk # Date 1541789162 28800 # Node ID fb490d798be078c43b748789fa8b644b65e67ded # Parent 17f21047a232c79bf5ed55df4afb4f59def0a657 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 diff -r 17f21047a232 -r fb490d798be0 mercurial/hg.py --- 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 diff -r 17f21047a232 -r fb490d798be0 tests/test-remotefilelog-share.t --- /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 < [extensions] + > remotefilelog= + > share= + > EOF + + $ hg init master + $ cd master + $ cat >> .hg/hgrc < [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 diff -r 17f21047a232 -r fb490d798be0 tests/test-subrepo-recursion.t --- 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