revlog: use the user facing filename as the display_id for filelogs
I had trouble isolating some LFS blob corruption detected by `hg verify` because
the traceback referenced a file, but with the `data/` prefix in the `.hg/store`
path, so it couldn't be located with the `file()` revset:
```
Traceback (most recent call last):
File "/mnt/d/mercurial/mercurial/revlog.py", line 3209, in verifyintegrity
_verify_revision(self, skipflags, state, node)
File "/mnt/d/mercurial/hgext/lfs/wrapper.py", line 246, in _verify_revision
orig(rl, skipflags, state, node)
File "/mnt/d/mercurial/mercurial/revlog.py", line 158, in _verify_revision
rl.revision(node)
File "/mnt/d/mercurial/mercurial/revlog.py", line 1816, in revision
return self._revisiondata(nodeorrev, _df)
File "/mnt/d/mercurial/mercurial/revlog.py", line 1870, in _revisiondata
self.checkhash(text, node, rev=rev)
File "/mnt/d/mercurial/mercurial/revlog.py", line 1996, in checkhash
% (self.display_id, pycompat.bytestr(revornode))
mercurial.error.RevlogError: integrity check failed on data/EXE/PPC/shrinksrec.exe:0
```
(I'm a little surprised it resulted in a stacktrace instead of just a message,
but that's a different issue. I'm also not sure how to trigger the simplestore
case, since IIUC, it's also a revlog based store.)
It's not clear how to handle the changelog and manifest (because the user
doesn't interact with them as a file), so those cases are left alone. The other
thing that would be nice to improve somehow is to indicate that the ":0" is a
revlog revision, not the changeset revision that users are used to. I'm not
sure how to handle the "or node" part though.
== New Features ==
* `hg purge` is now a core command using `--confirm` by default.
* The `rev-branch-cache` is now updated incrementally whenever changesets
are added.
* The new options `experimental.bundlecompthreads` and
`experimental.bundlecompthreads.<engine>` can be used to instruct
the compression engines for bundle operations to use multiple threads
for compression. The default is single threaded operation. Currently
only supported for zstd.
== Default Format Change ==
These changes affects newly created repositories (or new clone) done with
Mercurial 5.8.
* The `ZSTD` compression will now be used by default for new repositories
when available. This compression format was introduced in Mercurial 5.0,
released in May 2019. See `hg help config.format.revlog-compression` for
details.
* Mercurial installation built with the Rust parts will now use the
"persistent nodemap" feature by default. This feature was introduced in
Mercurial 5.4 (May 2020). However Mercurial instalation built without the
fast Rust implementation will refuse to interract with them by default.
This restriction can be lifted through configuration.
See `hg help config.format.use-persistent-nodemap` for details
== New Experimental Features ==
* There's a new `diff.merge` config option to show the changes
relative to an automerge for merge changesets. This makes it
easier to detect and review manual changes performed in merge
changesets. It is supported by `hg diff --change`, `hg log -p`
`hg incoming -p`, and `hg outgoing -p` so far.
== Bug Fixes ==
* gracefully recover from inconsistent persistent-nodemap data from disk.
== Backwards Compatibility Changes ==
* In normal repositories, the first parent of a changeset is not null,
unless both parents are null (like the first changeset). Some legacy
repositories violate this condition. The revlog code will now
silentely swap the parents if this condition is tested. This can
change the output of `hg log` when explicitly asking for first or
second parent. The changesets "nodeid" are not affected.
== Internal API Changes ==
* `changelog.branchinfo` is deprecated and will be removed after 5.8.
It is superseded by `changelogrevision.branchinfo`.
* Callbacks for revlog.addgroup and the changelog._nodeduplicatecallback hook
now get a revision number as argument instead of a node.
* revlog.addrevision returns the revision number instead of the node.
* `nodes.nullid` and related constants are being phased out as part of
the deprecation of SHA1. Repository instances and related classes
provide access via `nodeconstants` and in some cases `nullid` attributes.