Mercurial > hg
view tests/test-remotefilelog-clone.t @ 48653:a3cf460a6b1b
stream-clone: also filter the requirement we put in the bundle 2
We were wrongly putting irrelevant requirements in the bundle and the receiving
side was getting confused, treating them as being missing while still putting
them in the `requires` file. Leading do corrupted repositories.
This changes fix stream-clone behavior regarding format when bundle-2 is
involved, so we now also test this cases.
Behavior with older version of Mercurial will be fine as they filter the
requirements they get from the bundle on their side anyway.
Differential Revision: https://phab.mercurial-scm.org/D12084
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 18 Jan 2022 00:19:04 +0100 |
parents | 5e6542143d40 |
children | 7ee07e1a25c0 |
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 $ cd .. # shallow clone from full $ hgcloneshallow ssh://user@dummy/master shallow --noupdate streaming all changes 2 files to transfer, 227 bytes of data transferred 227 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 sparserevlog store $ 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 x x $ ls .hg/store/data $ echo foo > f $ hg add f $ hg ci -m 'local content' $ ls .hg/store/data 4a0a19218e082a343a1b17e5333409af9d98f0f5 $ cd .. # shallow clone from shallow $ hgcloneshallow ssh://user@dummy/shallow shallow2 --noupdate streaming all changes 3 files to transfer, 564 bytes of data transferred 564 bytes in * seconds (*/sec) (glob) searching for changes no changes found $ cd shallow2 $ hg debugrequires dotencode dirstate-v2 (dirstate-v2 !) exp-remotefilelog-repo-req-1 fncache generaldelta persistent-nodemap (rust !) revlog-compression-zstd (zstd !) revlogv1 sparserevlog store $ ls .hg/store/data 4a0a19218e082a343a1b17e5333409af9d98f0f5 $ hg update 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cat x x $ cd .. # full clone from shallow Note: the output to STDERR comes from a different process to the output on STDOUT and their relative ordering is not deterministic. As a result, the test was failing sporadically. To avoid this, we capture STDERR to a file and check its contents separately. $ TEMP_STDERR=full-clone-from-shallow.stderr.tmp $ hg clone --noupdate ssh://user@dummy/shallow full 2>$TEMP_STDERR streaming all changes [100] $ cat $TEMP_STDERR remote: abort: Cannot clone from a shallow repo to a full repo. abort: pull failed on remote $ rm $TEMP_STDERR # 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 b292c1e3311f updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ ls shallow3/.hg/store/data $ hg debugrequires -R shallow3/ dotencode dirstate-v2 (dirstate-v2 !) exp-remotefilelog-repo-req-1 fncache generaldelta persistent-nodemap (rust !) revlog-compression-zstd (zstd !) revlogv1 sparserevlog store