Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 11:29:19 +0200] rev 45613
changing-files: add a utility to compute the merged files post-commit
We will need it in `_getsidedata` as soon as we start persisting that set.
Differential Revision: https://phab.mercurial-scm.org/D9089
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 02:01:32 +0200] rev 45612
changing-files: record merged files at commit time
The data is easy to gather at commit time, and we need it for changeset centric
copy tracing. Right now, it is not persisted so we cannot use it. However we
will fix this part very soon, gathering something to persist was necessary
first.
Differential Revision: https://phab.mercurial-scm.org/D9088
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 24 Sep 2020 09:50:09 +0200] rev 45611
changing-files: add the ability to track merged files too
The set of merged files is used when doing changeset centric copy tracing (cf
`is_merged` in `mercurial/copies.py`. So tracking (and persisting) this set will
be useful. We start with adding the attribute on the new object.
Differential Revision: https://phab.mercurial-scm.org/D9087
Raphaël Gomès <rgomes@octobus.net> [Wed, 30 Sep 2020 18:10:29 +0200] rev 45610
rust: start plugging the dirstate tree behind a feature gate
The previous patch added the `dirstate-tree` feature gate to enable the two
dirstate implementations to co-habit while the tree-based one gets better.
This patch copies over the code that differs, be it because the algorithm
changed or because the borrowing rules are different.
Indeed, `DirstateTree` is not observationally equivalent to the std `HashMap` in
the APIs we use: it does not have the `Entry` API (yet?) and its iterator
returns owned values instead of references. This last point is because the
implementation needs to be changed to a more clever and efficient solution.
Differential Revision: https://phab.mercurial-scm.org/D9133
Raphaël Gomès <rgomes@octobus.net> [Wed, 30 Sep 2020 18:10:53 +0200] rev 45609
rust: introduce `dirstate-tree` cargo feature
This feature gates (at compile-time) the use of the newly-added dirstate tree.
The motivation for this is that the dirstate tree is currently *very* slow;
replacing the current hashmap-based dirstate is not a viable solution in terms
of performance... and why would you be using the Rust implementation if not
for performance?
The feature will also help reviewers better understand the differences that
will slowly appear as the dirstate tree gets better.
Differential Revision: https://phab.mercurial-scm.org/D9132
Raphaël Gomès <rgomes@octobus.net> [Wed, 30 Sep 2020 18:23:43 +0200] rev 45608
rust: fix formatting
Maybe there is a small divergence in the nightly formatter? This didn't seem to
trip the CI.
Differential Revision: https://phab.mercurial-scm.org/D9131
Raphaël Gomès <rgomes@octobus.net> [Wed, 23 Sep 2020 10:02:16 +0200] rev 45607
rust-matchers: make `Matcher` trait object-safe
Before this patch, it is not possible to create a `Matcher` trait-object (like
`Box<dyn Matcher>`), because of the use of a generic parameters in some methods,
namely `impl AsRef<HgPath>`.
While this makes the interface less flexible for callers in theory, it does not
change anything in the current codebase.
Until something like [1] is implemented, this is a "tradeoff" that we need to
make anyway.
[1] https://internals.rust-lang.org/t/pre-rfc-expand-object-safety/12693
Differential Revision: https://phab.mercurial-scm.org/D9071
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Sep 2020 14:07:00 +0200] rev 45606
rust: clippy pass
This removes some justified warnings and one hard error that, while technically
not a bug, was an ugly oversight on my part.
Differential Revision: https://phab.mercurial-scm.org/D9094
Martin von Zweigbergk <martinvonz@google.com> [Mon, 28 Sep 2020 08:07:09 -0700] rev 45605
updaterepo: add deprecation warning
We just moved all in-tree callers off of the function, but we're
leaving it here for a bit to help extension writers.
Differential Revision: https://phab.mercurial-scm.org/D9110
Antoine cezar<acezar@chwitlabs.fr> [Mon, 28 Sep 2020 16:54:35 +0200] rev 45604
rhg: use `.or(Err(Error))` not `.map_err(|_| Error)` (D9100#inline-15067)
Differential Revision: https://phab.mercurial-scm.org/D9109
Antoine cezar<acezar@chwitlabs.fr> [Mon, 28 Sep 2020 16:52:35 +0200] rev 45603
hg-core: use `.or(Err(Error))` not `.map_err(|_| Error)` (D9100#inline-15067)
Differential Revision: https://phab.mercurial-scm.org/D9108
Antoine cezar<acezar@chwitlabs.fr> [Mon, 28 Sep 2020 15:21:56 +0200] rev 45602
hg-core: return Err if `offset != bytes.len()`
(D8958#inline-14994 followup 2/2)
[X] make `Index` owner of its bytes
[X] make `Index::new` return an error if `offset != bytes.len()`
Differential Revision: https://phab.mercurial-scm.org/D9107
Antoine cezar<acezar@chwitlabs.fr> [Mon, 28 Sep 2020 15:13:51 +0200] rev 45601
hg-core: make `Index` owner of its bytes (D8958#inline-14994 followup 1/2)
Prevent building `Index` every time it is needed. It was a bad idea anyway.
When `Index::new` will return `Result` it will avoid things like `Revlog::len`
returning `Result<usize>` instead of `usize`.
[X] make `Index` owner of its bytes
[ ] make `Index::new` return an error if `offset != bytes.len()`
Differential Revision: https://phab.mercurial-scm.org/D9106
Antoine cezar<acezar@chwitlabs.fr> [Mon, 28 Sep 2020 14:33:52 +0200] rev 45600
hg-core: renaming of `Chunk` offset methods (D8958#inline-15002 followup)
Differential Revision: https://phab.mercurial-scm.org/D9105