sapling/eden/hg-server/tests/test-lz4revlog.t
Durham Goode 98d9269874 server: copy hg to a new hg-server directory
Summary:
Create a fork of the Mercurial code that we can use to build server
rpms. The hg servers will continue to exist for a few more months while we move
the darkstorm and ediscovery use cases off them. In the mean time, we want to
start making breaking changes to the client, so let's create a stable copy of
the hg code to produce rpms for the hg servers.

The fork is based off c7770c78d, the latest hg release.

This copies the files as is, then adds some minor tweaks to get it to build:
- Disables some lint checks that appear to be bypassed by path
- sed replace eden/scm with eden/hg-server
- Removed a dependency on scm/telemetry from the edenfs-client tests since
  scm/telemetry pulls in the original eden/scm/lib/configparser which conflicts
  with the hg-server conflict parser.

allow-large-files

Reviewed By: quark-zju

Differential Revision: D27632557

fbshipit-source-id: b2f442f4ec000ea08e4d62de068750832198e1f4
2021-04-09 10:09:06 -07:00

137 lines
3.1 KiB
Perl

$ disable treemanifest
$ configure dummyssh
$ hg init a
$ cd a
$ echo a>a
$ hg ci -q -A -m 0
$ cd ..
$ enable lz4revlog
having lz4revlog enabled should not affect an existing repo
$ cd a
$ for i in 0 1 2 3 4 5 6 7 8 9; do
> echo qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquuuuuuuuuuuuuuuuuuuuqqqq$i >> a
> done
$ hg ci -q -m 1
$ hg verify -q
$ cd ..
regular clone of an existing zlib repo should still use zlib
$ hg clone a b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ sort b/.hg/requires
dotencode
fncache
generaldelta
lz4revlog
revlogv1
store
treestate
pulled clone of zlib should use lz4
$ hg clone -q --pull a alz4
$ sort alz4/.hg/requires
dotencode
fncache
generaldelta
lz4revlog
revlogv1
store
treestate
disable lz4, then clone
$ hg --config format.uselz4=False clone --pull a w
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ sort w/.hg/requires
dotencode
fncache
generaldelta
revlogv1
store
treestate
attempt to disable lz4 should be ignored for hardlinked clone
$ hg --config format.uselz4=False clone alz4 azlib
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ sort azlib/.hg/requires
dotencode
fncache
generaldelta
lz4revlog
revlogv1
store
treestate
a new repo should use lz4 by default
$ hg init lz
$ cd lz
$ echo a>a
$ touch b
$ hg ci -q -A -m lz0
$ for i in 0 1 2 3 4 5 6 7 8 9; do
> echo qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquuuuuuuuuuuuuuuuuuuu$i >> a
> done
$ hg ci -q -m lz1
$ hg verify -q
$ hg tip
commit: 18e28922b6ed
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: lz1
$ sort .hg/requires
dotencode
fncache
generaldelta
lz4revlog
revlogv1
store
treestate
vanilla hg should bail in an lz4 repo
$ hg --config 'extensions.lz4revlog=!' tip
abort: repository requires features unknown to this Mercurial: lz4revlog!
(see https://mercurial-scm.org/wiki/MissingRequirement for more information)
[255]
uncompressed clone from lz4 to lz4 should be fine
$ cd ..
$ hg clone --uncompressed ssh://user@dummy/lz happy
streaming all changes
5 files to transfer, * of data (glob)
transferred 785 bytes in * seconds * (glob)
searching for changes
no changes found
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
uncompressed clone from lz4 to non-lz4 should fall back to pull
$ hg --config 'extensions.lz4revlog=!' clone -U --uncompressed ssh://user@dummy/lz nonesuch
warning: stream clone requested but client is missing requirements: lz4revlog
(see https://www.mercurial-scm.org/wiki/MissingRequirement for more information)
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 3 changes to 2 files