pullbundles: use unfiltered repo for head/base matching stable
authorJoerg Sonnenberger <joerg@bec.de>
Fri, 24 Apr 2020 20:00:25 +0200
branchstable
changeset 44765 3d5fb6cab832
parent 44764 ed684a82e29b
child 44766 a50f33f1ff24
pullbundles: use unfiltered repo for head/base matching The unfiltered view works even when changeset transistion from draft to hidden phase. The normal visibility is already ensured by discovery as invisible heads would have been filtered out before. Skipping the filtering has a positive impact on performance, too. Differential Revision: https://phab.mercurial-scm.org/D8481
mercurial/wireprotov1server.py
tests/test-pull-bundle.t
--- a/mercurial/wireprotov1server.py	Thu May 07 03:14:52 2020 -0700
+++ b/mercurial/wireprotov1server.py	Fri Apr 24 20:00:25 2020 +0200
@@ -391,7 +391,7 @@
     res = exchange.filterclonebundleentries(repo, res)
     if not res:
         return None
-    cl = repo.changelog
+    cl = repo.unfiltered().changelog
     heads_anc = cl.ancestors([cl.rev(rev) for rev in heads], inclusive=True)
     common_anc = cl.ancestors([cl.rev(rev) for rev in common], inclusive=True)
     compformats = clientcompressionsupport(proto)
--- a/tests/test-pull-bundle.t	Thu May 07 03:14:52 2020 -0700
+++ b/tests/test-pull-bundle.t	Fri Apr 24 20:00:25 2020 +0200
@@ -36,6 +36,8 @@
   $ cat <<EOF > .hg/hgrc
   > [server]
   > pullbundle = True
+  > [experimental]
+  > evolution = True
   > [extensions]
   > blackbox =
   > EOF
@@ -185,3 +187,24 @@
   * sending pullbundle "0.hg" (glob)
   * sending pullbundle "0.hg" (glob)
   $ rm repo/.hg/blackbox.log
+
+Test processing when nodes used in the pullbundle.manifest end up being hidden
+
+  $ hg --repo repo debugobsolete ed1b79f46b9a29f5a6efa59cf12fcfca43bead5a
+  1 new obsolescence markers
+  obsoleted 1 changesets
+  $ hg serve --repo repo --config server.view=visible -p $HGPORT -d --pid-file=hg.pid -E errors.log
+  $ cat hg.pid >> $DAEMON_PIDS
+  $ hg clone http://localhost:$HGPORT repo-obs
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  new changesets bbd179dfa0a7:effea6de0384
+  updating to branch default
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ killdaemons.py