directaccess: fix uses of commands.status() that don't go through flag parsing
When `commands.commit.post-status` is enabled, after commit/amend,
commands.status() is called without any revs argument, which means that status
gets None instead of an empty list like it would receive if the user had invoked
this on the commandline. With the `experimental.directaccess` config enabled,
this gets passed to `unhidehashlikerevs`, which didn't previously handle None,
but now should.
Differential Revision: https://phab.mercurial-scm.org/D11883
test: add test for a former race resulting in bad dirstate
In 6.0 this used to result in the size being stored in the dirstate is wrong.
This was fixed by other change to the mtime gathering logic.
Differential Revision: https://phab.mercurial-scm.org/D11749
rhg: fix a crash on non-generaldelta revlogs
Differential Revision: https://phab.mercurial-scm.org/D11882
rhg: centralize index header parsing
Centralize index header parsing, parse the generaldelta flag,
and leave breadcrumbs to relate the code to python.
Differential Revision: https://phab.mercurial-scm.org/D11881
rhg: demonstrate that rhg breaks on non-generaldelta revlogs
Differential Revision: https://phab.mercurial-scm.org/D11880
tests: add a short `sleep` in test-status.t
With dirstate-v2 and rhg both enabled, this test would sometimes fail for me
with:
```
--- tests/test-status.t
+++ tests/test-status.t#dirstate-v2.err
@@ -943,7 +943,7 @@
$ rm subdir/unknown
$ hg status
$ hg debugdirstate --all --no-dates | grep '^ '
- 0 -1 set subdir
+ 0 -1 unset subdir
```
Meaning that `status` did not write a directory mtime in the dirstate
as expected. This can happen if the observed mtime of the directory is
the same as "current time" at the start of `status`. This current time
is obtained by creating a temporary file and checking its mtime.
Even with ext4 on my system being able to store nanosecond precision,
identical mtime for successive but separate operations is still possible
becuse the kernel may cache the current time:
https://stackoverflow.com/a/
14393315/1162888
0.1 second should be enough for this cache to be updated, without
significantly slowing down the test.
Differential Revision: https://phab.mercurial-scm.org/D11900