Mercurial > hg
view tests/test-treediscovery.t @ 32697:19b9fc40cc51
revlog: skeleton support for version 2 revlogs
There are a number of improvements we want to make to revlogs
that will require a new version - version 2. It is unclear what the
full set of improvements will be or when we'll be done with them.
What I do know is that the process will likely take longer than a
single release, will require input from various stakeholders to
evaluate changes, and will have many contentious debates and
bikeshedding.
It is unrealistic to develop revlog version 2 up front: there
are just too many uncertainties that we won't know until things
are implemented and experiments are run. Some changes will also
be invasive and prone to bit rot, so sitting on dozens of patches
is not practical.
This commit introduces skeleton support for version 2 revlogs in
a way that is flexible and not bound by backwards compatibility
concerns.
An experimental repo requirement for denoting revlog v2 has been
added. The requirement string has a sub-version component to it.
This will allow us to declare multiple requirements in the course
of developing revlog v2. Whenever we change the in-development
revlog v2 format, we can tweak the string, creating a new
requirement and locking out old clients. This will allow us to
make as many backwards incompatible changes and experiments to
revlog v2 as we want. In other words, we can land code and make
meaningful progress towards revlog v2 while still maintaining
extreme format flexibility up until the point we freeze the
format and remove the experimental labels.
To enable the new repo requirement, you must supply an experimental
and undocumented config option. But not just any boolean flag
will do: you need to explicitly use a value that no sane person
should ever type. This is an additional guard against enabling
revlog v2 on an installation it shouldn't be enabled on. The
specific scenario I'm trying to prevent is say a user with a
4.4 client with a frozen format enabling the option but then
downgrading to 4.3 and accidentally creating repos with an
outdated and unsupported repo format. Requiring a "challenge"
string should prevent this.
Because the format is not yet finalized and I don't want to take
any chances, revlog v2's version is currently 0xDEAD. I figure
squatting on a value we're likely never to use as an actual revlog
version to mean "internal testing only" is acceptable. And
"dead" is easily recognized as something meaningful.
There is a bunch of cleanup that is needed before work on revlog
v2 begins in earnest. I plan on doing that work once this patch
is accepted and we're comfortable with the idea of starting down
this path.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 19 May 2017 20:29:11 -0700 |
parents | a1dd2c0c479e |
children | e45ec589f962 |
line wrap: on
line source
#require killdaemons 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 (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 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 (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 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 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) (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) (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) (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 (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 (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=zstd,zlib,none,bzip2 "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "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=zstd,zlib,none,bzip2 "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "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=zstd,zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2 #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=zlib,none,bzip2 "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "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=zlib,none,bzip2 "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961 x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "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=zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 "GET /?cmd=capabilities HTTP/1.1" 200 - "GET /?cmd=heads HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=zlib,none,bzip2 #endif