Mercurial > hg
diff tests/test-remotefilelog-clone-tree.t @ 40495:3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
This is remotefilelog as of my recent patches for compatibility with
current tip of hg, minus support for old versions of Mercurial and
some FB-specific features like their treemanifest extension and
fetching linkrev data from a patched phabricator. The file extutil.py
moved from hgext3rd to remotefilelog.
This is not yet ready to be landed, consider it a preview for
now. Planned changes include:
* replace lz4 with zstd
* rename some capabilities, requirements and wireproto commands to mark
them as experimental
* consolidate bits of shallowutil with related functions (eg readfile)
I'm certainly open to other (small) changes, but my rough mission is
to land this largely as-is so we can use it as a model of the
functionality we need going forward for lazy-fetching of file contents
from a server.
# no-check-commit because of a few foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D4782
author | Augie Fackler <augie@google.com> |
---|---|
date | Thu, 27 Sep 2018 13:03:19 -0400 |
parents | |
children | fc2766860796 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-remotefilelog-clone-tree.t Thu Sep 27 13:03:19 2018 -0400 @@ -0,0 +1,117 @@ + $ PYTHONPATH=$TESTDIR/..:$PYTHONPATH + $ export PYTHONPATH + + $ . "$TESTDIR/remotefilelog-library.sh" + + $ hginit master + $ cd master + $ echo treemanifest >> .hg/requires + $ cat >> .hg/hgrc <<EOF + > [remotefilelog] + > server=True + > EOF +# uppercase directory name to test encoding + $ mkdir -p A/B + $ echo x > A/B/x + $ hg commit -qAm x + + $ cd .. + +# shallow clone from full + + $ hgcloneshallow ssh://user@dummy/master shallow --noupdate + streaming all changes + 4 files to transfer, 449 bytes of data + transferred 449 bytes in * seconds (*/sec) (glob) + searching for changes + no changes found + $ cd shallow + $ cat .hg/requires + dotencode + fncache + generaldelta + remotefilelog + revlogv1 + store + treemanifest + $ find .hg/store/meta | sort + .hg/store/meta + .hg/store/meta/_a + .hg/store/meta/_a/00manifest.i + .hg/store/meta/_a/_b + .hg/store/meta/_a/_b/00manifest.i + + $ hg update + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) + + $ cat A/B/x + x + + $ ls .hg/store/data + $ echo foo > A/B/F + $ hg add A/B/F + $ hg ci -m 'local content' + $ ls .hg/store/data + ca31988f085bfb945cb8115b78fabdee40f741aa + + $ cd .. + +# shallow clone from shallow + + $ hgcloneshallow ssh://user@dummy/shallow shallow2 --noupdate + streaming all changes + 5 files to transfer, 1008 bytes of data + transferred 1008 bytes in * seconds (*/sec) (glob) + searching for changes + no changes found + $ cd shallow2 + $ cat .hg/requires + dotencode + fncache + generaldelta + remotefilelog + revlogv1 + store + treemanifest + $ ls .hg/store/data + ca31988f085bfb945cb8115b78fabdee40f741aa + + $ hg update + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ cat A/B/x + x + + $ cd .. + +# full clone from shallow +# - send stderr to /dev/null because the order of stdout/err causes +# flakiness here + $ hg clone --noupdate ssh://user@dummy/shallow full 2>/dev/null + streaming all changes + remote: abort: Cannot clone from a shallow repo to a full repo. + [255] + +# getbundle full clone + + $ printf '[server]\npreferuncompressed=False\n' >> master/.hg/hgrc + $ hgcloneshallow ssh://user@dummy/master shallow3 + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + new changesets 18d955ee7ba0 + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ ls shallow3/.hg/store/data + $ cat shallow3/.hg/requires + dotencode + fncache + generaldelta + remotefilelog + revlogv1 + store + treemanifest