tests/test-relink.t
changeset 12115 a0dcbcbd1590
parent 10218 750b7a4f01f6
child 12372 5163e3c8aa52
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-relink.t	Mon Aug 30 14:01:57 2010 +0900
@@ -0,0 +1,89 @@
+  $ 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 '[ui]' > .hg/hgrc
+  $ echo 'username= A. Foo <a.foo@bar.com>' >> .hg/hgrc
+  $ echo a > a
+  $ echo b > b
+  $ hg ci -Am addfile
+  adding a
+  adding b
+  $ echo a >> a
+  $ echo a >> b
+  $ hg ci -Am changefiles
+
+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
+  requesting all changes
+  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
+  $ echo '[ui]' >> .hg/hgrc
+  $ echo 'username= A. Baz <a.baz@bar.com>' >> .hg/hgrc
+  $ 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 .*/.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 (136 bytes 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
+