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