revlog: fix revlogio.packentry corner case
We want to store version information about the revlog in the first
entry of its index. The code in packentry was using some heuristics
to detect whether this was the first entry, but these heuristics could
fail in some cases (e.g. rev 0 was empty; rev 1 descends directly from
the nullid and is stored as a delta).
We now give the revision number to packentry to avoid heuristics.
#!/bin/sh
hglocate()
{
echo "hg locate $@"
hg locate "$@"
ret=$?
echo
return $ret
}
mkdir t
cd t
hg init
echo 0 > a
echo 0 > b
echo 0 > t.h
mkdir t
echo 0 > t/x
echo 0 > t/b
echo 0 > t/e.h
mkdir dir.h
echo 0 > dir.h/foo
hg ci -A -m m -d "1000000 0"
touch nottracked
hglocate a && echo locate succeeded || echo locate failed
hglocate NONEXISTENT && echo locate succeeded || echo locate failed
hglocate
hg rm a
hg ci -m m -d "1000000 0"
hglocate a
hglocate NONEXISTENT
hglocate relpath:NONEXISTENT
hglocate
hglocate -r 0 a
hglocate -r 0 NONEXISTENT
hglocate -r 0 relpath:NONEXISTENT
hglocate -r 0
echo % -I/-X with relative path should work
cd t
hglocate
hglocate -I ../t
# test issue294
cd ..
rm -r t
hglocate 't/**'
mkdir otherdir
cd otherdir
hglocate b
hglocate '*.h'
hglocate path:t/x
hglocate 're:.*\.h$'
hglocate -r 0 b
hglocate -r 0 '*.h'
hglocate -r 0 path:t/x
hglocate -r 0 're:.*\.h$'