D5251: share: reload repo after adjusting it in postshare()
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Fri Nov 9 19:29:37 UTC 2018
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
When sharing a repo that's using remotefilelog, the upate 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.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5251
AFFECTED FILES
mercurial/hg.py
tests/test-remotefilelog-share.t
tests/test-subrepo-recursion.t
CHANGE DETAILS
diff --git a/tests/test-subrepo-recursion.t b/tests/test-subrepo-recursion.t
--- a/tests/test-subrepo-recursion.t
+++ b/tests/test-subrepo-recursion.t
@@ -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
diff --git a/tests/test-remotefilelog-share.t b/tests/test-remotefilelog-share.t
new file mode 100644
--- /dev/null
+++ b/tests/test-remotefilelog-share.t
@@ -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
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -270,6 +270,7 @@
})
postshare(srcrepo, r, defaultpath=defaultpath)
+ r = repository(ui, dest)
_postshareupdate(r, update, checkout=checkout)
return r
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list