sapling/eden/scm/tests/test-lfs-bundle.t
Durham Goode 4f8c30b04e py3: enable 92 py3 tests
Summary: These now pass

Reviewed By: singhsrb

Differential Revision: D19785175

fbshipit-source-id: bf92757e3fe0753e1b61ffddfd30a37fb40a642f
2020-02-17 14:52:37 -08:00

276 lines
12 KiB
Raku

#chg-compatible
$ disable treemanifest
In this test, we want to test LFS bundle application. The test will cover all
combinations: LFS on/off; remotefilelog on/off.
To make it more interesting, the file revisions will contain hg filelog
metadata ('\1\n'). The bundle will have 1 file revision overlapping with the
destination repo.
# rev 1 2 3
# repo: yes yes no
# bundle: no (base) yes yes (deltabase: 2 if possible)
It is interesting because rev 2 could have been stored as LFS in the repo, and
non-LFS in the bundle; or vice-versa.
Init:
$ . helpers-usechg.sh
$ enable lfs remotefilelog
$ setconfig lfs.url=file://$TESTTMP/remote remotefilelog.cachepath=$TESTTMP/cache
Helper functions to create commits:
$ commitxy() {
> hg debugdrawdag "$@" <<'EOS'
> Y # Y/X=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nE\nF (copied from Y)
> | # Y/Y=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nG\nH (copied from X)
> X # X/X=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nC\n
> # X/Y=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nD\n
> EOS
> }
$ commitz() {
> hg debugdrawdag "$@" <<'EOS'
> Z # Z/X=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nI\n (copied from Y)
> | # Z/Y=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nJ\n (copied from X)
> | # Z/Z=\1\nZ
> Y
> EOS
> }
$ enablelfs() {
> cat >> .hg/hgrc <<EOF
> [lfs]
> threshold=1
> EOF
> }
$ enableshallow() {
> echo remotefilelog >> .hg/requires
> }
Generate bundles
$ for i in shallow full; do
> for j in normal lfs; do
> NAME=src-$i-$j
> hg init $TESTTMP/$NAME
> cd $TESTTMP/$NAME
> [ $i = shallow ] && enableshallow
> [ $j = lfs ] && enablelfs
> commitxy
> commitz
> echo ---- Source repo: $i $j ----
> hg debugfilerevision -r 'all()'
> hg bundle -q --base X -r Y+Z $TESTTMP/$NAME.bundle
> SRCNAMES="$SRCNAMES $NAME"
> done
> done
---- Source repo: shallow normal ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=0 size=41 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=0 size=41 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Source repo: shallow lfs ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=2000 size=41 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=2000 size=41 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Source repo: full normal ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=0 size=45 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=0 size=45 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=583fc1cb5a72,88c7303c7f80,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Source repo: full lfs ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=2000 size=41 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=2000 size=41 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
Note: full normal repo has a wrong size=45 where it should be 41, see XXX note
in mercurial/filelog.py.
Prepare destination repos
$ for i in shallow full; do
> for j in normal lfs; do
> NAME=dst-$i-$j
> hg init $TESTTMP/$NAME
> cd $TESTTMP/$NAME
> [ $i = shallow ] && enableshallow
> [ $j = lfs ] && enablelfs
> commitxy
> DSTNAMES="$DSTNAMES $NAME"
> done
> done
Apply bundles
$ cd $TESTTMP
$ for i in $SRCNAMES; do
> for j in $DSTNAMES; do
> echo ---- Applying $i.bundle to $j ----
> cp -R $TESTTMP/$j $TESTTMP/tmp-$i-$j
> cd $TESTTMP/tmp-$i-$j
> hg unbundle $TESTTMP/$i.bundle -q 2>/dev/null || echo 'CRASHED!' && hg debugfilerev -r 'all()-X'
> if grep remotefilelog .hg/requires &>/dev/null; then :; else
> hg verify --quiet
> fi
> done
> done
---- Applying src-shallow-normal.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-normal.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-normal.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=000000000000,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=000000000000,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-shallow-normal.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=000000000000,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=000000000000,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=583fc1cb5a72,88c7303c7f80,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34