narrow: fix crash when restoring backup in legacy repo
Using --addremove when committing in an old repo (before we started
keeping .hg/narrowspec.dirstate) results in a crash. The test
case modified in this patch would crash like this:
abort: $ENOENT$
The issue is that when the dirstateguard is aborted, it tries to
restore the backup of .hg/narrowspec.dirstate. However, since we were
in an old repo, that file did not get created when the dirstateguard
was created. Note that the dirstateguard is not used unless
--addremove is passed.
This patch fixes the bug by making restorewcbackup() not fail if the
backup doesn't exist. I also made clearwcbackup() safe, just in case.
Differential Revision: https://phab.mercurial-scm.org/D5634
https://bz.mercurial-scm.org/2493
Testing tagging with the EOL extension
$ cat >> $HGRCPATH <<EOF
> [extensions]
> eol =
>
> [eol]
> native = CRLF
> EOF
setup repository
$ hg init repo
$ cd repo
$ cat > .hgeol <<EOF
> [patterns]
> ** = native
> EOF
$ printf "first\r\nsecond\r\nthird\r\n" > a.txt
$ hg commit --addremove -m 'checkin'
adding .hgeol
adding a.txt
Tag:
$ hg tag 1.0
Rewrite .hgtags file as it would look on a new checkout:
$ hg update -q null
$ hg update -q
Touch .hgtags file again:
$ hg tag 2.0
$ cd ..