Mercurial > hg
view tests/test-remotefilelog-log.t @ 50443:3b199593fedd
hidden: add support to explicitly access hidden changesets via HTTP
We now detect hidden access request and validate them while handling HTTP
wireprotocol command. This changeset only introduces server support. Client
support is added in a subsequent changeset.
The mechanism we use for the HTTP wireprotocol is the same as the one used to
lift filtering for hgweb. The use of the global `access-hidden` parameter in
the http url is a simple and effective approach that
* works around the lack of global parameters in wire protocol v1,
* reuses the mechanism used for hgweb (that does not use the wireproto), and
* can be safely ignored by older client (fitting the best effort contract).
The feature is still experimental, so we can easily update the implementation
details in the future. However, landing a first implementation now will help
test the feature in the wild and iterate on alternative implementations if
deemed necessary.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Sat, 13 Apr 2019 02:01:26 +0200 |
parents | 7ee07e1a25c0 |
children | dcaa2df1f688 |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" $ hg init master $ cd master $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > EOF $ echo x > x $ hg commit -qAm x $ mkdir dir $ echo y > dir/y $ hg commit -qAm y $ cd .. Shallow clone from full $ hgcloneshallow ssh://user@dummy/master shallow --noupdate streaming all changes 2 files to transfer, 473 bytes of data transferred 473 bytes in * seconds (*/sec) (glob) searching for changes no changes found $ cd shallow $ hg debugrequires dotencode dirstate-v2 (dirstate-v2 !) exp-remotefilelog-repo-req-1 fncache generaldelta persistent-nodemap (rust !) revlog-compression-zstd (zstd !) revlogv1 share-safe sparserevlog store $ hg update 2 files updated, 0 files merged, 0 files removed, 0 files unresolved 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) Log on a file without -f $ hg log dir/y warning: file log can be slow on large repos - use -f to speed it up changeset: 1:2e73264fab97 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: y Log on a file with -f $ hg log -f dir/y changeset: 1:2e73264fab97 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: y Log on a file with kind in path $ hg log -r "filelog('path:dir/y')" changeset: 1:2e73264fab97 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: y Log on multiple files with -f $ hg log -f dir/y x changeset: 1:2e73264fab97 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: y changeset: 0:b292c1e3311f user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: x Log on a directory $ hg log dir changeset: 1:2e73264fab97 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: y Log on a file from inside a directory $ cd dir $ hg log y warning: file log can be slow on large repos - use -f to speed it up changeset: 1:2e73264fab97 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: y Log on a file via -fr $ cd .. $ hg log -fr tip dir/ --template '{rev}\n' 1 Trace renames $ hg mv x z $ hg commit -m move $ hg log -f z -T '{desc} {file_copies}\n' -G @ move z (x) : o x Verify remotefilelog handles rename metadata stripping when comparing file sizes $ hg debugrebuilddirstate $ hg status