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 rep; cd rep
touch empty-file
python -c 'for x in range(10000): print x' > large-file
hg addremove
hg commit -m A
rm large-file empty-file
python -c 'for x in range(10,10000): print x' > another-file
hg addremove -s50
hg commit -m B
echo % comparing two empty files caused ZeroDivisionError in the past
hg update -C 0
rm empty-file
touch another-empty-file
hg addremove -s50
cd ..
hg init rep2; cd rep2
python -c 'for x in range(10000): print x' > large-file
python -c 'for x in range(50): print x' > tiny-file
hg addremove
hg commit -m A
python -c 'for x in range(70): print x' > small-file
rm tiny-file
rm large-file
hg addremove -s50
hg commit -m B