test-relink.t
100 lines
| 2.5 KiB
| text/troff
|
Tads3Lexer
/ tests / test-relink.t
Matt Mackall
|
r22046 | #require hardlink | ||
Mads Kiilerich
|
r16971 | |||
Nicolas Dumazet
|
r12115 | $ echo "[extensions]" >> $HGRCPATH | ||
$ echo "relink=" >> $HGRCPATH | ||||
$ fix_path() { | ||||
> tr '\\' / | ||||
> } | ||||
$ cat > arelinked.py <<EOF | ||||
> import sys, os | ||||
> from mercurial import util | ||||
> path1, path2 = sys.argv[1:3] | ||||
> if util.samefile(path1, path2): | ||||
> print '%s == %s' % (path1, path2) | ||||
> else: | ||||
> print '%s != %s' % (path1, path2) | ||||
> EOF | ||||
create source repository | ||||
$ hg init repo | ||||
$ cd repo | ||||
$ echo a > a | ||||
$ echo b > b | ||||
$ hg ci -Am addfile | ||||
adding a | ||||
adding b | ||||
Thomas Arendsen Hein
|
r16350 | $ cat "$TESTDIR/binfile.bin" >> a | ||
$ cat "$TESTDIR/binfile.bin" >> b | ||||
Nicolas Dumazet
|
r12115 | $ hg ci -Am changefiles | ||
Martin Geisler
|
r13656 | make another commit to create files larger than 1 KB to test | ||
formatting of final byte count | ||||
Thomas Arendsen Hein
|
r16350 | $ cat "$TESTDIR/binfile.bin" >> a | ||
$ cat "$TESTDIR/binfile.bin" >> b | ||||
Martin Geisler
|
r13656 | $ hg ci -m anotherchange | ||
Martin Geisler
|
r13657 | don't sit forever trying to double-lock the source repo | ||
$ hg relink . | ||||
Mads Kiilerich
|
r15447 | relinking $TESTTMP/repo/.hg/store to $TESTTMP/repo/.hg/store (glob) | ||
Martin Geisler
|
r13657 | there is nothing to relink | ||
Martin Geisler
|
r13659 | |||
Nicolas Dumazet
|
r12115 | Test files are read in binary mode | ||
Augie Fackler
|
r22947 | $ $PYTHON -c "file('.hg/store/data/dummy.i', 'wb').write('a\r\nb\n')" | ||
Nicolas Dumazet
|
r12115 | $ cd .. | ||
clone and pull to break links | ||||
$ hg clone --pull -r0 repo clone | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 2 changes to 2 files | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd clone | ||||
$ hg pull -q | ||||
$ echo b >> b | ||||
$ hg ci -m changeb | ||||
created new head | ||||
Augie Fackler
|
r22947 | $ $PYTHON -c "file('.hg/store/data/dummy.i', 'wb').write('a\nb\r\n')" | ||
Nicolas Dumazet
|
r12115 | |||
relink | ||||
Pierre-Yves David
|
r25125 | $ hg relink --debug --config progress.debug=true | fix_path | ||
Mads Kiilerich
|
r12640 | relinking $TESTTMP/repo/.hg/store to $TESTTMP/clone/.hg/store | ||
Nicolas Dumazet
|
r12115 | tip has 2 files, estimated total number of files: 3 | ||
collecting: 00changelog.i 1/3 files (33.33%) | ||||
collecting: 00manifest.i 2/3 files (66.67%) | ||||
collecting: a.i 3/3 files (100.00%) | ||||
collecting: b.i 4/3 files (133.33%) | ||||
collecting: dummy.i 5/3 files (166.67%) | ||||
collected 5 candidate storage files | ||||
not linkable: 00changelog.i | ||||
not linkable: 00manifest.i | ||||
timeless
|
r12744 | pruning: data/a.i 3/5 files (60.00%) | ||
Nicolas Dumazet
|
r12115 | not linkable: data/b.i | ||
timeless
|
r12744 | pruning: data/dummy.i 5/5 files (100.00%) | ||
Nicolas Dumazet
|
r12115 | pruned down to 2 probably relinkable files | ||
timeless
|
r12744 | relinking: data/a.i 1/2 files (50.00%) | ||
Nicolas Dumazet
|
r12115 | not linkable: data/dummy.i | ||
Siddharth Agarwal
|
r23285 | relinked 1 files (1.36 KB reclaimed) | ||
Nicolas Dumazet
|
r12115 | $ cd .. | ||
check hardlinks | ||||
$ python arelinked.py repo/.hg/store/data/a.i clone/.hg/store/data/a.i | ||||
repo/.hg/store/data/a.i == clone/.hg/store/data/a.i | ||||
$ python arelinked.py repo/.hg/store/data/b.i clone/.hg/store/data/b.i | ||||
repo/.hg/store/data/b.i != clone/.hg/store/data/b.i | ||||