Pulkit Goyal <7895pulkit@gmail.com> [Mon, 24 May 2021 16:27:54 +0530] rev 47411
rhg: look for repository in ancestors also instead of cwd only
Last patch introduced config reading at startup to parse value of `--repository`
flag. However, that patch only tried to check for current repository at current
working directory and not it's ancestors. This patch fixes that.
Differential Revision: https://phab.mercurial-scm.org/D10767
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 11 Apr 2021 00:50:10 +0530] rev 47410
rhg: read [paths] for `--repository` value
hg parses `-R` and `--repository` CLI arguments "early" in order to know which
local repository to load config from. (Config can then affect whether or how to
fall back.)
The value of of those arguments can be not only a filesystem path, but also an
alias configured in the `[paths]` section. This part was missing in rhg and
this patch implements that.
The current patch still lacks functionality to read config of current repository
if we are not at root of repo. That will be fixed in upcoming patches.
A new crate `home` is added to get path of home directory.
Differential Revision: https://phab.mercurial-scm.org/D10296
Augie Fackler <augie@google.com> [Mon, 07 Jun 2021 17:10:35 -0400] rev 47409
merge: with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 18:09:29 +0200] rev 47408
revlog: allow to pass an existing docket to `_loadindex()`
This will be when switching undelying files, for examples during censors and strip operation with rvlog-v2.
Differential Revision: https://phab.mercurial-scm.org/D10800
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 18:10:15 +0200] rev 47407
revlog: add a ways to blacklist some revision when searching for a delta
This will be useful to recompute appropriate deltas one the fly during
censor/strip operation with revlog-v2.
Differential Revision: https://phab.mercurial-scm.org/D10799
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 18:08:52 +0200] rev 47406
util: add `nb_bytes` argument to `copyfile` to partially copy a file
When set, this allow to copy only the first `nb_bytes` of a file. This will be
useful for censor/strip operation with revlogv2.
Differential Revision: https://phab.mercurial-scm.org/D10798
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 16:20:36 +0200] rev 47405
revlog: move `revisioninfo` in `revlogutils`
We will need it in other utility module. So lets extract it from `revlog.py`,
the module is too large already anyway.
Differential Revision: https://phab.mercurial-scm.org/D10797
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 17:11:49 +0200] rev 47404
revlog: use the `entry` function in bundlerepo
We can use some of the default value again!
Differential Revision: https://phab.mercurial-scm.org/D10796
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 17:11:21 +0200] rev 47403
revlog: use entry in revlogv0.py
This make things clearer and we can reply on some of the default value directly.
Differential Revision: https://phab.mercurial-scm.org/D10795
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 17:11:10 +0200] rev 47402
revlog: use the new `entry` function in revlog.py
This just make the construction of the tuple clearer.
Differential Revision: https://phab.mercurial-scm.org/D10794
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 17:10:56 +0200] rev 47401
revlog: add a function to build index entry tuple
Keeping index entry as tuple make sense for performance reason, however it does
not means we need to manually build that tuple for all piece of python code that
are not performance critical.
So we add a nice function responsible to build the tuple using argument using
explicit keyword argument.
Differential Revision: https://phab.mercurial-scm.org/D10793
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 16:19:36 +0200] rev 47400
revlog: move `offset_type` to `revlogutils`
This multiple module are using this so it make sense to move it at the utility
level.
Differential Revision: https://phab.mercurial-scm.org/D10792
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 22 May 2021 00:06:22 +0200] rev 47399
revlog: move entry documentation alongside new related constants
Accessing individual index-entry element is usually done using integer directly.
This is presumably for "performance reasons". However as the index entry gain
more and more element it seems useful to get the option to use symbolic constant
to access item, for both clarify and versatility. We will probably keep using
integer for performance critical path, but less critical code may start using
them now that they are declared.
Differential Revision: https://phab.mercurial-scm.org/D10791
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 21 May 2021 20:08:11 +0200] rev 47398
censor: drop size limitation on the tombstone
This limitation seems to date back from a previous implementation of censors,
were the revision were censored" in place. For a long while the implementation
actually involved rewriting the revlog before replacing the original data. So it looks like we can safely remove this limitation.
The tests suite agrees.
Differential Revision: https://phab.mercurial-scm.org/D10790
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 29 May 2021 00:11:56 +0200] rev 47397
revlog: move censoring code in a dedicated module
This code is quite specific and we are about to add more of it for revlog-v2
(and other derived version). So we move this code in a dedicated module in
`mercurial/revlogutils/`. This looks like a good fit.
The diff is huge because I used `hg copy` to create the new file so that we keep
the history of the censor code.
Differential Revision: https://phab.mercurial-scm.org/D10789
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 29 May 2021 00:11:32 +0200] rev 47396
censor: reduce risk of censor test blowing up output limit
The censored file is really big, and we keep using `hg cat` on it, with the
assumption that it is censored. However, when it is not censored, the amount of
extra line output is huge and quickly saturate the backlog of terminal and CI
system.
Differential Revision: https://phab.mercurial-scm.org/D10788
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 May 2021 23:41:17 +0200] rev 47395
revlog: store sidedata in their own file
This makes sidedata manipulation simpler and results in more compact data when
traversing either data or sidedata.
Differential Revision: https://phab.mercurial-scm.org/D10787
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 May 2021 23:41:12 +0200] rev 47394
revlog: fix docket.date_filepath docstring
This was copy-pasted too quickly.
Differential Revision: https://phab.mercurial-scm.org/D10786
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 May 2021 04:09:30 +0200] rev 47393
revlog: use dedicated code for reading sidedata
We are about to introduce a new, dedicated, file to store sidedata. Before doing so, we make sidedata reading go through different code as reading data chunk. This will simplify some of the complexity of the next changesets.
The reading is very simple right now and will need some improvement later to
reuse some of the caching strategy we use for the data file.
Differential Revision: https://phab.mercurial-scm.org/D10785
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 May 2021 04:09:10 +0200] rev 47392
revlog: simplify "partial read" error message
We are about to reuse this message in more places and the current handling is
pretty hard to read. So we eat two pie with one stone and clean up this.
Differential Revision: https://phab.mercurial-scm.org/D10784
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 May 2021 03:41:02 +0200] rev 47391
revlog: no longer return sidedata from `_revisiondata`
All users have been migrated.
When they was introduced sidedata where grouped with the actual revision data
and unpacking one came with the other. Sidedata moved be stored "independently"
and it no longer make sense to retrieve both at the same time unconditionnaly.
Differential Revision: https://phab.mercurial-scm.org/D10783
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 May 2021 03:28:15 +0200] rev 47390
revlog: use `self.sidedata` directly in `revlog.clone`
We want to change `revlog._revisiondata` signature, so we need to migrate users
away.
Differential Revision: https://phab.mercurial-scm.org/D10782
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 May 2021 03:23:34 +0200] rev 47389
revlog: use `self.sidedata` directly to construct changelogrevision
We want to change `revlog._revisiondata` signature, so we need to migrate users
away.
Differential Revision: https://phab.mercurial-scm.org/D10781
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 May 2021 03:21:53 +0200] rev 47388
revlog: implement sidedata without using _revisiondata
When they was introduced sidedata where grouped with the actual revision data
and unpacking one came with the other. Sidedata moved be stored "independently"
and it no longer make sense to retrieve both at the same time unconditionnaly.
We start with changeset the implementation of the `revlog.sidedata` command to
no longer use `self._revisiondata`. More users need to be migrated to direct
usage of this `revlog.sidedata` method. This will be done in the coming
changesets.
Differential Revision: https://phab.mercurial-scm.org/D10780
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 May 2021 23:44:58 +0200] rev 47387
revlogv2: drop "sidedatacompression" from the list of todos
This was implemented in c4dbb7636a12 and 07641bafa646, but I forgot to drop it
from the todo-list.
Differential Revision: https://phab.mercurial-scm.org/D10779
Simon Sapin <simon.sapin@octobus.net> [Wed, 02 Jun 2021 10:00:50 +0200] rev 47386
rust: Use a maintained crate for SHA-1 hashing
https://crates.io/crates/rust-crypto hasn’t been updated in 5 years.
This doesn’t neccesarily mean there’s anything wrong with it, but if
something comes up it’s preferable to rely on libraries that have active
maintainers.
Use https://crates.io/crates/sha-1 from https://github.com/RustCrypto instead
Differential Revision: https://phab.mercurial-scm.org/D10835
Simon Sapin <simon.sapin@octobus.net> [Wed, 02 Jun 2021 18:03:43 +0200] rev 47385
rust: Parse "subinclude"d files along the way, not later
When parsing a `.hgignore` file and encountering an `include:` line,
the included file is parsed recursively right then in a depth-first fashion.
With `subinclude:` however included files were parsed (recursively) much later.
This changes it to be expanded during parsing, like `.hgignore`.
The motivation for this is an upcoming changeset that needs to detect changes
in which files are ignored or not. The plan is to hash all ignore files while
they are being read, and store that hash in the dirstate (in v2 format).
In order to allow a potential alternative implementations to read that format,
the algorithm to compute that hash must be documented. Having a well-defined
depth-first ordering for the tree of (sub-)included files makes that easier.
Differential Revision: https://phab.mercurial-scm.org/D10834
Simon Sapin <simon.sapin@octobus.net> [Wed, 02 Jun 2021 18:14:44 +0200] rev 47384
rust: Make some file path parameters less generic
These are not widely used APIs that benefit from being maximally flexible,
taking an explicit `&Path` borrow is fine and simplifies their internals.
Differential Revision: https://phab.mercurial-scm.org/D10833
Raphaël Gomès <rgomes@octobus.net> [Mon, 26 Apr 2021 22:59:56 +0200] rev 47383
convert-bazaar: use breezy package instead of old bzr one
Breezy is the most recent of the two, and works on Python 3 while being
compatible with the (old) Bazaar file format.
This patch contains a variety of unicode <-> bytes changes, API breakage fixing,
restoring failing imports and changing the executable from `bzr` to `brz`.
I recommend using the debian packages for `brz` and `python3-breezy` (3.1+),
because the pip package seems to be haunted by radioactive dragons.
Differential Revision: https://phab.mercurial-scm.org/D10513
Raphaël Gomès <rgomes@octobus.net> [Wed, 21 Apr 2021 10:58:21 +0200] rev 47382
bzr: only support bzr conversion on Python3
Python 2 support will be dropped from Mercurial before anyone needs to do a
bzr -> hg conversion on Python 2 again. Bazaar tests were broken with the new
lib anyway, which we'll get into in the next patches.
Differential Revision: https://phab.mercurial-scm.org/D10512
Martin von Zweigbergk <martinvonz@google.com> [Tue, 01 Jun 2021 22:38:29 -0700] rev 47381
rewriteutil: add pointer to help text when rewrite would cause divergence
The evolve extension's version of the hint has this pointer. I missed
it when I moved it to core. This is pretty much the same as
D10723. Turns out I missed two places :(
Differential Revision: https://phab.mercurial-scm.org/D10832
Simon Sapin <simon.sapin@octobus.net> [Tue, 25 May 2021 09:20:30 +0200] rev 47380
rhg: Add support for dirstate-v2
Differential Revision: https://phab.mercurial-scm.org/D10804
Simon Sapin <simon.sapin@octobus.net> [Wed, 26 May 2021 11:53:37 +0200] rev 47379
rhg: Remove some intermediate Vecs in `rhg files`
Instead of calling `parse_dirstate` which then calls `parse_dirstate_entries`,
call the latter directly in order to skip some intermediate steps.
Differential Revision: https://phab.mercurial-scm.org/D10803
Martin von Zweigbergk <martinvonz@google.com> [Tue, 01 Jun 2021 15:19:08 -0700] rev 47378
merge: make applyupdates() not mutate mresult argument
We have an extension at work that overrides `merge.applyupdates()` to
make it skip some writes and instead instruct the virtual filesystem
we use to get a different version. That override doesn't work
correctly when doing `hg co -m` and there's a modified file in the
dirstate that's deleted in the destination. That's because
`applyupdates()` mutates its `mresult` argument and our extension had
passed in a modified copied of `mresult` to the overridden function,
which resulted in the mutation not having any effect. This patch fixes
that by letting the caller (i.e. `merge._update()`) update `mresult`
with the extra actions instead. Besides fixing our internal extension,
that seems cleaner to me anyway (better to not mutate `mresult` only
in some cases and we can skip some of the logic if we're not going to
update the dirstate anyway).
Differential Revision: https://phab.mercurial-scm.org/D10830
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 03 Jun 2021 16:12:03 +0200] rev 47377
index: use an explicit constant for INDEX_HEADER format and use it for docket
This avoid leaking python-3.6 compatibility details too much.
Differential Revision: https://phab.mercurial-scm.org/D10831
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:18:27 +0200] rev 47376
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10822
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:18:20 +0200] rev 47375
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
We extract the long message in a module level constant for clarity.
Differential Revision: https://phab.mercurial-scm.org/D10821
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:14:58 +0200] rev 47374
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10820
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:13:33 +0200] rev 47373
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
We extract the long message in a module level constant for clarity.
Differential Revision: https://phab.mercurial-scm.org/D10819
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:11:54 +0200] rev 47372
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10818
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:11:07 +0200] rev 47371
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10817
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:11:01 +0200] rev 47370
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10816
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:09:01 +0200] rev 47369
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
We extract the long message in a module level constant for clarity.
Differential Revision: https://phab.mercurial-scm.org/D10815
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:06:33 +0200] rev 47368
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10814
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:05:53 +0200] rev 47367
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10813
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:05:23 +0200] rev 47366
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10812
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:03:48 +0200] rev 47365
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10811
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:03:24 +0200] rev 47364
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
We extract the long message in a module level constant for clarity.
Differential Revision: https://phab.mercurial-scm.org/D10810
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 09:01:23 +0200] rev 47363
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10809
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 08:59:50 +0200] rev 47362
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10808
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 08:59:07 +0200] rev 47361
verify: use some intermediate variables instead of a multi-liner
This is shorter and easier to read as the indentation remains the same.
Differential Revision: https://phab.mercurial-scm.org/D10807
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 08:58:53 +0200] rev 47360
verify: expand a one liner into explicit commands
The result is not longer, but it is more edible.
Differential Revision: https://phab.mercurial-scm.org/D10806
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 01 Jun 2021 08:54:53 +0200] rev 47359
verify: align a comment line
This argument description is back with it comrade.
Differential Revision: https://phab.mercurial-scm.org/D10805
Simon Sapin <simon.sapin@octobus.net> [Tue, 01 Jun 2021 16:55:59 +0200] rev 47358
dirstate-v2: Drop parent directory cache when removing a dirstate node
The premise of the directory cache is that the dirstate contains child nodes
for every entry that `read_dir` would return. When removing nodes, that may
not be the case anymore so the cache should be invalidated.
Differential Revision: https://phab.mercurial-scm.org/D10829
Simon Sapin <simon.sapin@octobus.net> [Mon, 31 May 2021 19:54:41 +0200] rev 47357
dirstate-v2: Add --dirs to debugdirstate command
`hg debugdirstate --dirs` also shows information stored in the dirstate
(for `read_dir` caching) about directories.
Differential Revision: https://phab.mercurial-scm.org/D10828
Simon Sapin <simon.sapin@octobus.net> [Mon, 31 May 2021 18:35:44 +0200] rev 47356
dirstate-v2: Write .hg/dirstate back to disk on directory cache changes
Differential Revision: https://phab.mercurial-scm.org/D10827
Simon Sapin <simon.sapin@octobus.net> [Fri, 28 May 2021 11:48:59 +0200] rev 47355
dirstate-v2: Skip readdir in status based on directory mtime
When calling `read_dir` during `status` and the directory is found to be
eligible for caching (see code comments), write the directory’s mtime to the
dirstate. The presence of a directory mtime in the dirstate is meaningful
and indicates eligibility.
When an eligible directory mtime is found in the dirstate and `stat()` shows
that the mtime has not changed, `status` can skip calling `read_dir` again
and instead rely on the names of child nodes in the dirstate tree.
The `tempfile` crate is used to create a temporary file in order to use its
modification time as "current time" with the same truncation as other files
and directories would have in their own modification time.
Differential Revision: https://phab.mercurial-scm.org/D10826
Simon Sapin <simon.sapin@octobus.net> [Thu, 27 May 2021 18:40:54 +0200] rev 47354
dirstate-v2: Allow tree nodes without an entry to store a timestamp
Timestamps are stored on 96 bits:
* 64 bits for the signed number of seconds since the Unix epoch
* 32 bits for the nanoseconds in the `0 <= ns < 1_000_000_000` range
For now timestamps are not used or set yet.
Differential Revision: https://phab.mercurial-scm.org/D10825
Simon Sapin <simon.sapin@octobus.net> [Fri, 28 May 2021 20:07:27 +0200] rev 47353
dirstate-tree: Change status() results to not borrow DirstateMap
The `status` function takes a `&'tree mut DirstateMap<'on_disk>` parameter.
`'on_disk` borrows a read-only byte buffer with the contents of the
`.hg/dirstate` file. `DirstateMap` internally uses represents file paths as
`std::borrow::Cow<'on_disk, HgPath>`, which borrows the byte buffer when
possible and allocates an owned string if not, such as for files added to the
dirstate after it was loaded from disk.
Previously the return type of of `status` has a `'tree` lifetime, meaning it
could borrow all paths from the `DirstateMap`. With this changeset, that
lifetime is changed to `'on_disk` meaning that only paths from the byte buffer
can be borrowed, and paths allocated by `DirstateMap` must be copied.
Usually most paths are in the byte buffer, and most paths are not part of the
return value of `status`, so the number of extra copies should be small.
This change will enable `status` to mutate the `DirstateMap` after it has
finished constructing its return value. Previously such mutation would be
prevented by possible on-going borrows.
Differential Revision: https://phab.mercurial-scm.org/D10824
Simon Sapin <simon.sapin@octobus.net> [Fri, 28 May 2021 12:16:14 +0200] rev 47352
dirstate-tree: Fix status algorithm with unreadable directory
When reading a directory fails such as because of insufficient permissions,
it should be treated as empty by status instead of skipped entirely.
Differential Revision: https://phab.mercurial-scm.org/D10823
Martin von Zweigbergk <martinvonz@google.com> [Tue, 25 May 2021 16:46:32 -0700] rev 47351
docket: make compatible with py3.6, where Struct.format is bytes
Differential Revision: https://phab.mercurial-scm.org/D10770
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 22:12:48 +0200] rev 47350
revlogv2: make sure bundling pick a compatible bundle format
Before this change, revlog-v2 repository where bundled using the incompatible
"v1" format.
Differential Revision: https://phab.mercurial-scm.org/D10802
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 May 2021 20:42:51 +0200] rev 47349
censor: do not process sidedata of censored revision while bundling
The revision is censored, we should ignore it.
Differential Revision: https://phab.mercurial-scm.org/D10801
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 May 2021 20:00:27 +0200] rev 47348
changegroup: fix deltachunk API to be consistent from one class to another
Depending of the subclass the 8th index of `chunkdata` items was either a
sidedata dict of a proto_flags integer. We have not fixed the inconsistency and
we already return fixed "delta" items from `deltaiter`.
Differential Revision: https://phab.mercurial-scm.org/D10778