diff options
author | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 14:49:51 +0100 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 14:49:51 +0100 |
commit | a498da43c7fdb9f24b73680c02a4a3588cc62d9a (patch) | |
tree | daf8119dae1749b5165b68033a1b23a7375ce9ce /tests/test-relink.t | |
download | mercurial-tarball-a498da43c7fdb9f24b73680c02a4a3588cc62d9a.tar.gz |
Tarball conversion
Diffstat (limited to 'tests/test-relink.t')
-rw-r--r-- | tests/test-relink.t | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/test-relink.t b/tests/test-relink.t new file mode 100644 index 0000000..2b0bc2b --- /dev/null +++ b/tests/test-relink.t @@ -0,0 +1,100 @@ + $ "$TESTDIR/hghave" hardlink || exit 80 + + $ 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 + $ cat "$TESTDIR/binfile.bin" >> a + $ cat "$TESTDIR/binfile.bin" >> b + $ hg ci -Am changefiles + +make another commit to create files larger than 1 KB to test +formatting of final byte count + + $ cat "$TESTDIR/binfile.bin" >> a + $ cat "$TESTDIR/binfile.bin" >> b + $ hg ci -m anotherchange + +don't sit forever trying to double-lock the source repo + + $ hg relink . + relinking $TESTTMP/repo/.hg/store to $TESTTMP/repo/.hg/store (glob) + there is nothing to relink + + +Test files are read in binary mode + + $ python -c "file('.hg/store/data/dummy.i', 'wb').write('a\r\nb\n')" + $ 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 + $ python -c "file('.hg/store/data/dummy.i', 'wb').write('a\nb\r\n')" + + +relink + + $ hg relink --debug | fix_path + relinking $TESTTMP/repo/.hg/store to $TESTTMP/clone/.hg/store + 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 + pruning: data/a.i 3/5 files (60.00%) + not linkable: data/b.i + pruning: data/dummy.i 5/5 files (100.00%) + pruned down to 2 probably relinkable files + relinking: data/a.i 1/2 files (50.00%) + not linkable: data/dummy.i + relinked 1 files (1.37 KB reclaimed) + $ 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 + |