copies: consider nullrev a common ancestor
I've seen many bugs in the git codebase that were caused by it not
having a null revision and being forced to treat root commits
differently. Mercurial has a null revision and I think it's generally
a bug to treat it differently from other commits in graph algorithms.
This effectively undoes
83cfa1baf8ad (copies: don't report copies with
unrelated branch, 2010-01-01). The test cases that that commit added
still passes. I suspect some other fix after that commit made it
unnecessary.
Differential Revision: https://phab.mercurial-scm.org/D5594
#require no-pure
A script to generate nasty diff worst-case scenarios:
$ cat > s.py <<EOF
> import random
> for x in range(100000):
> print
> if random.randint(0, 100) >= 50:
> x += 1
> print(hex(x))
> EOF
$ hg init a
$ cd a
Check in a big file:
$ "$PYTHON" ../s.py > a
$ hg ci -qAm0
Modify it:
$ "$PYTHON" ../s.py > a
Time a check-in, should never take more than 10 seconds user time:
$ hg ci --time -m1
time: real .* secs .user [0-9][.].* sys .* (re)