Mercurial > hg-stable
view tests/test-treediscovery.t @ 40501:30a7d3b6b281
narrow: rework logic to check whether we need to widen and narrow
This patch reworks logic which calculates whether we need to extend or narrow
our working copy or not.
We filter the addincludes, removeincludes, addexcludes and removeexcludes passed
from user to the actual added and removed includes and excludes. What that means
is a user can pass an already included path as addincludes, a path which is not
included as removeincludes etc. In such situations the old logic use to think we
need to do some work, whereas we don't need to do that work.
In old logic, even if we don't have anything new to include but it believes we
need to call widen, this adds some good amount of work on large repository. A
widen calls involves computing incomming csets, calling the narrow_widen() which
in non-ellipses cases goes through all the set of csets which are available
which can take ~2-3 mins on large repos. Those 2-3 minutes are spend on doing
nothing which a client can prevent by checking is there really anything which
needs to be included.
The tests changes shows that we don't go to the server anymore in such cases
which is nice.
Differential Revision: https://phab.mercurial-scm.org/D5183
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Tue, 23 Oct 2018 16:24:04 +0300 |
parents | b4b7427b5786 |
children | ed84a4d48910 |
line wrap: on
line source
Tests discovery against servers without getbundle support: $ CAP="getbundle bundle2" $ . "$TESTDIR/notcapable" $ cat >> $HGRCPATH <<EOF > [ui] > logtemplate="{rev} {node|short}: {desc} {branches}\n" > EOF Setup HTTP server control: $ remote=http://localhost:$HGPORT/ $ export remote $ tstart() { > echo '[web]' > $1/.hg/hgrc > echo 'push_ssl = false' >> $1/.hg/hgrc > echo 'allow_push = *' >> $1/.hg/hgrc > hg serve -R $1 -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log > cat hg.pid >> $DAEMON_PIDS > } $ tstop() { > killdaemons.py > [ "$1" ] && cut -d' ' -f6- access.log && cat errors.log > rm access.log errors.log > } Both are empty: $ hg init empty1 $ hg init empty2 $ tstart empty2 $ hg incoming -R empty1 $remote comparing with http://localhost:$HGPORT/ no changes found [1] $ hg outgoing -R empty1 $remote comparing with http://localhost:$HGPORT/ no changes found [1] $ hg pull -R empty1 $remote pulling from http://localhost:$HGPORT/ no changes found $ hg push -R empty1 $remote pushing to http://localhost:$HGPORT/ no changes found [1] $ tstop Base repo: $ hg init main $ cd main $ hg debugbuilddag -mo '+2:tbase @name1 +3:thead1 <tbase @name2 +4:thead2 @both /thead1 +2:tmaintip' $ hg log -G o 11 a19bfa7e7328: r11 both | o 10 8b6bad1512e1: r10 both | o 9 025829e08038: r9 both |\ | o 8 d8f638ac69e9: r8 name2 | | | o 7 b6b4d315a2ac: r7 name2 | | | o 6 6c6f5d5f3c11: r6 name2 | | | o 5 70314b29987d: r5 name2 | | o | 4 e71dbbc70e03: r4 name1 | | o | 3 2c8d5d5ec612: r3 name1 | | o | 2 a7892891da29: r2 name1 |/ o 1 0019a3b924fd: r1 | o 0 d57206cc072a: r0 $ cd .. $ tstart main Full clone: $ hg clone main full updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd full $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes no changes found $ hg push $remote pushing to http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. Local is empty: $ cd empty1 $ hg incoming $remote comparing with http://localhost:$HGPORT/ 0 d57206cc072a: r0 1 0019a3b924fd: r1 2 a7892891da29: r2 name1 3 2c8d5d5ec612: r3 name1 4 e71dbbc70e03: r4 name1 5 70314b29987d: r5 name2 6 6c6f5d5f3c11: r6 name2 7 b6b4d315a2ac: r7 name2 8 d8f638ac69e9: r8 name2 9 025829e08038: r9 both 10 8b6bad1512e1: r10 both 11 a19bfa7e7328: r11 both $ hg outgoing $remote comparing with http://localhost:$HGPORT/ no changes found [1] $ hg push $remote pushing to http://localhost:$HGPORT/ no changes found [1] $ hg pull $remote pulling from http://localhost:$HGPORT/ requesting all changes adding changesets adding manifests adding file changes added 12 changesets with 24 changes to 2 files new changesets d57206cc072a:a19bfa7e7328 (run 'hg update' to get a working copy) $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. Local is subset: $ hg clone main subset --rev name2 ; cd subset adding changesets adding manifests adding file changes added 6 changesets with 12 changes to 2 files new changesets d57206cc072a:d8f638ac69e9 updating to branch name2 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 6 a7892891da29: r2 name1 7 2c8d5d5ec612: r3 name1 8 e71dbbc70e03: r4 name1 9 025829e08038: r9 both 10 8b6bad1512e1: r10 both 11 a19bfa7e7328: r11 both $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg push $remote pushing to http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes adding changesets adding manifests adding file changes added 6 changesets with 12 changes to 2 files new changesets a7892891da29:a19bfa7e7328 (run 'hg update' to get a working copy) $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. $ tstop Remote is empty: $ tstart empty2 $ cd main $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes 0 d57206cc072a: r0 1 0019a3b924fd: r1 2 a7892891da29: r2 name1 3 2c8d5d5ec612: r3 name1 4 e71dbbc70e03: r4 name1 5 70314b29987d: r5 name2 6 6c6f5d5f3c11: r6 name2 7 b6b4d315a2ac: r7 name2 8 d8f638ac69e9: r8 name2 9 025829e08038: r9 both 10 8b6bad1512e1: r10 both 11 a19bfa7e7328: r11 both $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes no changes found $ hg push $remote pushing to http://localhost:$HGPORT/ searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 12 changesets with 24 changes to 2 files $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. $ tstop Local is superset: $ hg clone main subset2 --rev name2 adding changesets adding manifests adding file changes added 6 changesets with 12 changes to 2 files new changesets d57206cc072a:d8f638ac69e9 updating to branch name2 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ tstart subset2 $ cd main $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes 2 a7892891da29: r2 name1 3 2c8d5d5ec612: r3 name1 4 e71dbbc70e03: r4 name1 9 025829e08038: r9 both 10 8b6bad1512e1: r10 both 11 a19bfa7e7328: r11 both $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes no changes found $ hg push $remote pushing to http://localhost:$HGPORT/ searching for changes abort: push creates new remote branches: both, name1! (use 'hg push --new-branch' to create new remote branches) [255] $ hg push $remote --new-branch pushing to http://localhost:$HGPORT/ searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 6 changesets with 12 changes to 2 files $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. $ tstop Partial pull: $ tstart main $ hg clone $remote partial --rev name2 adding changesets adding manifests adding file changes added 6 changesets with 12 changes to 2 files new changesets d57206cc072a:d8f638ac69e9 updating to branch name2 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd partial $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 6 a7892891da29: r2 name1 7 2c8d5d5ec612: r3 name1 8 e71dbbc70e03: r4 name1 9 025829e08038: r9 both 10 8b6bad1512e1: r10 both 11 a19bfa7e7328: r11 both $ hg incoming $remote --rev name1 comparing with http://localhost:$HGPORT/ searching for changes 6 a7892891da29: r2 name1 7 2c8d5d5ec612: r3 name1 8 e71dbbc70e03: r4 name1 $ hg pull $remote --rev name1 pulling from http://localhost:$HGPORT/ searching for changes adding changesets adding manifests adding file changes added 3 changesets with 6 changes to 2 files (+1 heads) new changesets a7892891da29:e71dbbc70e03 (run 'hg heads' to see heads) $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 9 025829e08038: r9 both 10 8b6bad1512e1: r10 both 11 a19bfa7e7328: r11 both $ cd .. $ tstop Both have new stuff in new named branches: $ hg clone main repo1a --rev name1 -q $ hg clone repo1a repo1b -q $ hg clone main repo2a --rev name2 -q $ hg clone repo2a repo2b -q $ tstart repo1a $ cd repo2a $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 6 a7892891da29: r2 name1 7 2c8d5d5ec612: r3 name1 8 e71dbbc70e03: r4 name1 $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes 2 70314b29987d: r5 name2 3 6c6f5d5f3c11: r6 name2 4 b6b4d315a2ac: r7 name2 5 d8f638ac69e9: r8 name2 $ hg push $remote --new-branch pushing to http://localhost:$HGPORT/ searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 4 changesets with 8 changes to 2 files (+1 heads) $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes adding changesets adding manifests adding file changes added 3 changesets with 6 changes to 2 files (+1 heads) new changesets a7892891da29:e71dbbc70e03 (run 'hg heads' to see heads) $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. $ tstop $ tstart repo1b $ cd repo2b $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 6 a7892891da29: r2 name1 7 2c8d5d5ec612: r3 name1 8 e71dbbc70e03: r4 name1 $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes 2 70314b29987d: r5 name2 3 6c6f5d5f3c11: r6 name2 4 b6b4d315a2ac: r7 name2 5 d8f638ac69e9: r8 name2 $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes adding changesets adding manifests adding file changes added 3 changesets with 6 changes to 2 files (+1 heads) new changesets a7892891da29:e71dbbc70e03 (run 'hg heads' to see heads) $ hg push $remote --new-branch pushing to http://localhost:$HGPORT/ searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 4 changesets with 8 changes to 2 files (+1 heads) $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. $ tstop Both have new stuff in existing named branches: $ rm -r repo1a repo1b repo2a repo2b $ hg clone main repo1a --rev 3 --rev 8 -q $ hg clone repo1a repo1b -q $ hg clone main repo2a --rev 4 --rev 7 -q $ hg clone repo2a repo2b -q $ tstart repo1a $ cd repo2a $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 8 d8f638ac69e9: r8 name2 $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes 4 e71dbbc70e03: r4 name1 $ hg push $remote --new-branch pushing to http://localhost:$HGPORT/ searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 2 changes to 2 files $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes adding changesets adding manifests adding file changes added 1 changesets with 2 changes to 2 files new changesets d8f638ac69e9 (run 'hg update' to get a working copy) $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. $ tstop $ tstart repo1b $ cd repo2b $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes 8 d8f638ac69e9: r8 name2 $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes 4 e71dbbc70e03: r4 name1 $ hg pull $remote pulling from http://localhost:$HGPORT/ searching for changes adding changesets adding manifests adding file changes added 1 changesets with 2 changes to 2 files new changesets d8f638ac69e9 (run 'hg update' to get a working copy) $ hg push $remote --new-branch pushing to http://localhost:$HGPORT/ searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 2 changes to 2 files $ hg incoming $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ hg outgoing $remote comparing with http://localhost:$HGPORT/ searching for changes no changes found [1] $ cd .. #if zstd $ tstop show "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961+2c8d5d5ec612be65cdfdeac78b7662ab1696324a x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+1827a5bb63e602382eb89dd58f2ac9f3b007ad91* (glob) "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull #else $ tstop show "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961+2c8d5d5ec612be65cdfdeac78b7662ab1696324a x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+1827a5bb63e602382eb89dd58f2ac9f3b007ad91* (glob) "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull #endif