revlog: fix resolution of revlog version 0
This partially backs out
cecf3f8bccd3, "revlog: always process opener options."
My understanding is that if there's no "revlog1" nor "revlog2" in .hg/requires,
the repository should stick to the v0 format. The reasoning is briefly
described in
31a5973fcf96, "revlog: get rid of defversion."
Maybe we can drop support for missing opener options, but I didn't do that
in this patch.
rust: add comment about lack of wdirrev handling
If hg is compiled with rust support, 'only(wdir())' crashed as
"rustext.GraphError: ('ParentOutOfRange',
2147483647)", which should instead
say "abort: working directory revision cannot be specified."
templatekw: fix crash on multiple latesttags resolution at wdir (
issue6055)
It appears not easy to fix only() to support wdir(), so this patch works
around the issue by getlatesttags(). The "+1" after len(changes) doesn't
matter since ctx never changes while sorting. It's just for clarity.
test-template-keywords: add test for {latesttag} of wdir() revision
It's probably broken since
fb672eac2702, "templatekw: choose {latesttag}
by len(changes), not date (
issue5659)". only() doesn't support wdir.
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