Add dirstate.pathto and localrepo.pathto.
Every time util.pathto is called, we have to pass the repo root and the
repo cwd.
dirstate.pathto is a simple convenience function that knows about the
root and the cwd arguments. It's still possible to pass the cwd as an
optimization.
localrepo.pathto is a convenience function that just calls
dirstate.pathto, just like localrepo.getcwd.
dirstate.pathto becomes a single point that converts most (all?) paths
from the internal representation to some OS-specific relative path for
display purposes.
#!/bin/sh
hg init remote
cd remote
echo "# creating 'remote'"
cat >>afile <<EOF
0
EOF
hg add afile
hg commit -m "0.0"
cat >>afile <<EOF
1
EOF
hg commit -m "0.1"
cat >>afile <<EOF
2
EOF
hg commit -m "0.2"
cat >>afile <<EOF
3
EOF
hg commit -m "0.3"
hg update -C 0
cat >>afile <<EOF
1
EOF
hg commit -m "1.1"
cat >>afile <<EOF
2
EOF
hg commit -m "1.2"
cat >fred <<EOF
a line
EOF
cat >>afile <<EOF
3
EOF
hg add fred
hg commit -m "1.3"
hg mv afile adifferentfile
hg commit -m "1.3m"
hg update -C 3
hg mv afile anotherfile
hg commit -m "0.3m"
hg debugindex .hg/store/data/afile.i
hg debugindex .hg/store/data/adifferentfile.i
hg debugindex .hg/store/data/anotherfile.i
hg debugindex .hg/store/data/fred.i
hg debugindex .hg/store/00manifest.i
hg verify
echo "# Starting server"
hg serve -p 20061 -d --pid-file=../hg1.pid
cd ..
cat hg1.pid >> $DAEMON_PIDS
echo "# clone remote via stream"
for i in 0 1 2 3 4 5 6 7 8; do
hg clone -r "$i" http://localhost:20061/ test-"$i" 2>&1
if cd test-"$i"; then
hg verify
cd ..
fi
done
cd test-8
hg pull ../test-7
hg verify
cd ..
cd test-1
hg pull -r 4 http://localhost:20061/ 2>&1
hg verify
hg pull http://localhost:20061/ 2>&1
cd ..
cd test-2
hg pull -r 5 http://localhost:20061/ 2>&1
hg verify
hg pull http://localhost:20061/ 2>&1
hg verify
cd ..