Patchwork D8481: pullbundles: use unfiltered repo for head/base matching

login
register
mail settings
Submitter phabricator
Date April 24, 2020, 6:21 p.m.
Message ID <differential-rev-PHID-DREV-6hxgtxll77dwtowqrfas-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46232/
State Superseded
Headers show

Comments

phabricator - April 24, 2020, 6:21 p.m.
joerg.sonnenberger created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D8481

AFFECTED FILES
  mercurial/wireprotov1server.py
  tests/test-pull-bundle.t

CHANGE DETAILS




To: joerg.sonnenberger, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/test-pull-bundle.t b/tests/test-pull-bundle.t
--- a/tests/test-pull-bundle.t
+++ b/tests/test-pull-bundle.t
@@ -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
diff --git a/mercurial/wireprotov1server.py b/mercurial/wireprotov1server.py
--- a/mercurial/wireprotov1server.py
+++ b/mercurial/wireprotov1server.py
@@ -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)