From patchwork Fri Apr 24 18:21:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D8481: pullbundles: use unfiltered repo for head/base matching From: phabricator X-Patchwork-Id: 46232 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Fri, 24 Apr 2020 18:21:00 +0000 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 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 < .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)