Mercurial > hg
diff tests/test-remotefilelog-bundle2-legacy.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 | 71b8ad0ef3e0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-remotefilelog-bundle2-legacy.t Thu Sep 27 13:03:19 2018 -0400 @@ -0,0 +1,93 @@ + $ PYTHONPATH=$TESTDIR/..:$PYTHONPATH + $ export PYTHONPATH + + $ . "$TESTDIR/remotefilelog-library.sh" + +generaldelta to generaldelta interactions with bundle2 but legacy clients +without changegroup2 support + $ cat > testcg2.py << EOF + > from mercurial import changegroup, registrar, util + > import sys + > cmdtable = {} + > command = registrar.command(cmdtable) + > @command('testcg2', norepo=True) + > def testcg2(ui): + > if not util.safehasattr(changegroup, 'cg2packer'): + > sys.exit(80) + > EOF + $ cat >> $HGRCPATH << EOF + > [extensions] + > testcg2 = $TESTTMP/testcg2.py + > EOF + $ hg testcg2 || exit 80 + + $ cat > disablecg2.py << EOF + > from mercurial import changegroup, util, error + > deleted = False + > def reposetup(ui, repo): + > global deleted + > if deleted: + > return + > packermap = changegroup._packermap + > # protect against future changes + > if len(packermap) != 3: + > raise error.Abort('packermap has %d versions, expected 3!' % len(packermap)) + > for k in ['01', '02', '03']: + > if not packermap.get(k): + > raise error.Abort("packermap doesn't have key '%s'!" % k) + > + > del packermap['02'] + > deleted = True + > EOF + + $ hginit master + $ grep generaldelta master/.hg/requires + generaldelta + $ cd master +preferuncompressed = False so that we can make both generaldelta and non-generaldelta clones + $ cat >> .hg/hgrc <<EOF + > [remotefilelog] + > server=True + > [experimental] + > bundle2-exp = True + > [server] + > preferuncompressed = False + > EOF + $ echo x > x + $ hg commit -qAm x + + $ cd .. + + $ hgcloneshallow ssh://user@dummy/master shallow -q --pull --config experimental.bundle2-exp=True + 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) + $ cd shallow + $ cat >> .hg/hgrc << EOF + > [extensions] + > disablecg2 = $TESTTMP/disablecg2.py + > EOF + + $ cd ../master + $ echo y > y + $ hg commit -qAm y + + $ cd ../shallow + $ hg pull -u + pulling from ssh://user@dummy/master + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + new changesets d34c38483be9 + 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) + + $ echo a > a + $ hg commit -qAm a + $ hg push + pushing to ssh://user@dummy/master + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files