view tests/test-relink @ 11137:94afe7bc87a9

convert/svn: report path discovery progress When converting non-local repositories, scanning changed paths before retrieving data can be almost as slow as retrieving the data itself, thanks to HTTP calls overhead.
author Patrick Mezard <pmezard@gmail.com>
date Sun, 09 May 2010 22:51:25 +0200
parents 750b7a4f01f6
children
line wrap: on
line source

#!/bin/sh

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

echo '% 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
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 ..

echo '% clone and pull to break links'
hg clone --pull -r0 repo clone
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
python -c "file('.hg/store/data/dummy.i', 'wb').write('a\nb\r\n')"

echo '% relink'
hg relink --debug | sed 's:relinking.*store:relinking .hg/store:g' \
    | fix_path
cd ..

echo '% check hardlinks'
python arelinked.py 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