Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 15:08:22 -0500] rev 46640
shelve: fix conversion of exceptions to strings flagged by pytype
I've seen this done several ways and don't know what's correct. But pytype was
unhappy about the previous way:
FAILED: /mnt/c/Users/Matt/hg/tests/.pytype/pyi/mercurial/shelve.pyi
/usr/bin/python3.6 -m pytype.single --imports_info /mnt/c/Users/Matt/hg/tests/.pytype/imports/mercurial.shelve.imports --module-name mercurial.shelve -V 3.6 -o /mnt/c/Users/Matt/hg/tests/.pytype/pyi/mercurial/shelve.pyi --analyze-annotated --nofail --quick /mnt/c/Users/Matt/hg/mercurial/shelve.py
File "/mnt/c/Users/Matt/hg/mercurial/shelve.py", line 244, in _verifyandtransform: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: Union[KeyError, TypeError, ValueError])
File "/mnt/c/Users/Matt/hg/mercurial/shelve.py", line 253, in _getversion: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: ValueError)
The following methods aren't implemented on ValueError:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10122
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 06 Mar 2021 06:32:25 +0100] rev 46639
releasenotes: use the right API to access the 'sections'
Preventing direct access to the underlying dict fix a breakage introduced by the
refactoring in
d3df397e7a59.
This changeset is similar to
271dfcb98544,
5272542196cc and
f7621fa14b84. The
breackage of `releasenotes.py` stayed under my radar as the CI did not have
fuzzywuzzy installed. (Something that is about to be fixed).
Differential Revision: https://phab.mercurial-scm.org/D10121
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:37:13 +0100] rev 46638
requirements: also add a fncache constant
Continue the cleanup to the remaining requirements
Differential Revision: https://phab.mercurial-scm.org/D10109
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:35:29 +0100] rev 46637
requirements: also add a store constant
Continue the cleanup to the remaining requirements
Differential Revision: https://phab.mercurial-scm.org/D10108
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:33:24 +0100] rev 46636
requirements: also add a dotencode constant
Continue the cleanup to the remaining requirements
Differential Revision: https://phab.mercurial-scm.org/D10107
Raphaël Gomès <rgomes@octobus.net> [Tue, 02 Mar 2021 18:51:18 +0100] rev 46635
pure-parsers: document index class constants
This also adds the big endian prefix `>` to make the constants truly
platform-independent, even if no issue with this has been reported in the wild.
Differential Revision: https://phab.mercurial-scm.org/D10104
Martin von Zweigbergk <martinvonz@google.com> [Thu, 04 Mar 2021 16:06:55 -0800] rev 46634
copies: choose target directory based on longest match
If one side of a merge renames `dir1/` to `dir2/` and the subdirectory
`dir1/subdir1/` to `dir2/subdir2/`, and the other side of the merge
adds a file in `dir1/subdir1/`, we should clearly move that into
`dir2/subdir2/`. We already detect the directories correctly before
this patch, but we iterate over them in arbitrary order. That results
in the new file sometimes ending up in `dir2/subdir1/` instead. This
patch fixes it by iterating over the source directories by visiting
subdirectories first. That's achieved by simply iterating over them in
reverse lexicographical order.
Without the fix, the test case still passes on Python 2 but fails on
Python 3. It depends on the iteration order of the dict. I did not
look into how it's built up and why it behaved differently before the
fix. I could probably have gotten it to fail on Python 2 as well by
choosing different directory names.
Differential Revision: https://phab.mercurial-scm.org/D10115
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Mar 2021 21:58:55 +0100] rev 46633
exchange: stop advertising rev-branch-cache bundle capability
Since Mercurial 5.7, the corresponding bundle part is ignored as
redundant. Stop advertising it so that peers don't have to spend time
creating or transfering it.
Differential Revision: https://phab.mercurial-scm.org/D10114
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 16:33:12 -0800] rev 46632
errors: use more specific errors in rebase extension
Differential Revision: https://phab.mercurial-scm.org/D9914
Joerg Sonnenberger <joerg@bec.de> [Mon, 01 Mar 2021 16:54:51 +0100] rev 46631
changelog: rename parameters to reflect semantics
`read` and `readfiles` can be used with a revision just as well, so
follow the naming convention in revlog to reflect this.
Differential Revision: https://phab.mercurial-scm.org/D10081
Simon Sapin <simon.sapin@octobus.net> [Thu, 25 Feb 2021 21:29:12 +0100] rev 46630
rhg: Don’t attempt to read persistent nodemap without .hg/requires opt-in
Differential Revision: https://phab.mercurial-scm.org/D10077
Kyle Lippincott <spectral@google.com> [Thu, 04 Feb 2021 17:34:20 -0800] rev 46629
debian: support a "chg-first" installation mechanism (hg is actually chg)
This mechanism builds chg such that it looks for `hg` to be available at
/usr/lib/mercurial/hg instead of in the $PATH as `hg`, and makes the `hg` in
/usr/bin be a symlink to `chg`.
It's important to note that the hg binary must continue to be named `hg`. If we
wanted to instead place it at /usr/bin/pyhg or something similar, we would need
to modify Mercurial to allow that basename. Failure to do so would break
Mercurial's shell aliases that use `hg`, `chg`, or `$HG`.
I don't know if we should ever have a setup like this be the default setup, but
I'm willing to get more information on our experience with it for making such a
determination. Actually making it the default might be rather involved, as we
don't maintain the official debian packaging rules.
Differential Revision: https://phab.mercurial-scm.org/D10020
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Mar 2021 00:31:18 +0100] rev 46628
relnotes: document a number of node->revision type changes
Differential Revision: https://phab.mercurial-scm.org/D10103
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:30:23 +0100] rev 46627
requirements: also add a generaldelta constant
Continue the cleanup to the remaining requirements
Differential Revision: https://phab.mercurial-scm.org/D10106
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 14:00:45 +0100] rev 46626
requirements: add constant for revlog v1 requirement
Since this series is adding a new requirement, we might as well clean up while
we're here.
Differential Revision: https://phab.mercurial-scm.org/D10105
Raphaël Gomès <rgomes@octobus.net> [Thu, 18 Feb 2021 15:07:45 +0100] rev 46625
error: add `hint` attribute to `SidedataHashError`
This prevents an exception within an exception because `hint` does not exist.
Differential Revision: https://phab.mercurial-scm.org/D10024
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 11:17:16 +0100] rev 46624
changegroup: use the local variable instead of reaching through self
Gratuitous cleanup while I was here.
Differential Revision: https://phab.mercurial-scm.org/D10023
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 12:17:11 +0100] rev 46623
config: use level to properly deal with value priority
A higher priority alias will now take precedence over lower priority ones.
This was a requirements step before using alias more widely, especially to
rename existing and established config option.
Differential Revision: https://phab.mercurial-scm.org/D9927
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 11:21:49 +0100] rev 46622
config: track the "level" of a value
Config value now remember the "level" of the config that loaded it. This will be
used to ensure good priority management for alias.
Differential Revision: https://phab.mercurial-scm.org/D9926
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 10:28:03 +0100] rev 46621
config: track "source" along side value
Currently the source is stored in a entirely different way than the data. This
is impractical. Especially if we are about to add more of such metadata. So lets
put them back together.
Differential Revision: https://phab.mercurial-scm.org/D9925
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 30 Jan 2021 00:32:42 +0100] rev 46620
config: use a new `alter` method in `fixconfig`
The `set` function is doing various work related to metadata (eg: the source,
later the level). However the `fixconfig` call only updating some values
according to standard processing, not changing any of the related metadata. So
we introduce a new method and use it there.
Differential Revision: https://phab.mercurial-scm.org/D9924
Martin von Zweigbergk <martinvonz@google.com> [Mon, 01 Mar 2021 14:44:29 -0800] rev 46619
copies-rust: remove an unnecessary format!() inside assert!()
The `assert!()` macro supports formatting. Rust 2021 no longer
supports an unnecessary `format!()` inside it. I noticed because I
recently update my Rust toolchain and `test-check-cargo-lock.t`
started failing.
Differential Revision: https://phab.mercurial-scm.org/D10085
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 01 Mar 2021 20:08:26 +0100] rev 46618
copies: tests and fix parallel computation of changed file information
The code was mixing variable name and misbehaving in some case. This changeset
fix it and also add a tests to validate it does not regress. Without the fix,
the parallel-upgrade misbehavior in random ways.
Differential Revision: https://phab.mercurial-scm.org/D10084
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 13:07:00 +0100] rev 46617
config: test priority involving alias and cli
Differential Revision: https://phab.mercurial-scm.org/D9920
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 12:03:29 +0100] rev 46616
config: test priority involving alias and include
Differential Revision: https://phab.mercurial-scm.org/D9919
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 12:02:28 +0100] rev 46615
config: test priority involving alias
Differential Revision: https://phab.mercurial-scm.org/D9918
Simon Sapin <simon.sapin@octobus.net> [Thu, 25 Feb 2021 21:25:04 +0100] rev 46614
rhg: Check .hg/requires for absence of required features
Some old repository layouts are not supported.
Differential Revision: https://phab.mercurial-scm.org/D10076
Simon Sapin <simon.sapin@octobus.net> [Thu, 25 Feb 2021 23:14:35 +0100] rev 46613
rhg: Bug fix: with share-safe, always read store requirements
That is, the `store/requires` file,
regardless of whether the repository is a shared.
Differential Revision: https://phab.mercurial-scm.org/D10078
Simon Sapin <simon.sapin@octobus.net> [Mon, 11 Jan 2021 12:17:16 +0100] rev 46612
copies-rust: pass closures and iterators instead of `&ChangedFiles`
… to some functions that only use one method.
This will makes it easier to unit-test them.
Differential Revision: https://phab.mercurial-scm.org/D10070
Simon Sapin <simon.sapin@octobus.net> [Fri, 08 Jan 2021 11:58:16 +0100] rev 46611
copies-rust: pass `PathToken` around by value
It’s just a `usize`.
Differential Revision: https://phab.mercurial-scm.org/D10069
Martin von Zweigbergk <martinvonz@google.com> [Wed, 24 Feb 2021 09:27:33 -0800] rev 46610
tests: correct a commit description in test-copies-chain-merge.t
Differential Revision: https://phab.mercurial-scm.org/D10065
Augie Fackler <augie@google.com> [Wed, 24 Feb 2021 12:40:54 -0500] rev 46609
fuzz: if the caller of our makefile sets CC and CXX, trust them
This should fix the broken fuzzing build, because we've been
explicitly using clang++ but are now being given a CXX=afl++, which
does extra stuff.
Differential Revision: https://phab.mercurial-scm.org/D10066
Simon Sapin <simon.sapin@octobus.net> [Fri, 26 Feb 2021 12:16:43 +0100] rev 46608
rhg: Use clap’s support for global CLI arguments
By default, clap only accepts app-level arguments (as opposed to sub-command
level) to be specified before a sub-command: `rhg -R ./foo log`. Specifying
them after would be rejected: `rhg log -R ./foo`.
Previously we worked around that by registering global arguments both
at the app level and on each sub-command, but that required looking
for their value in two places. It turns out that Clap has built-in support
for what we want to do, so let’s use it.
Also, Clap "settings" turn out to be either global or not too.
Let’s make `AllowInvalidUtf8` apply to sub-commands too.
Differential Revision: https://phab.mercurial-scm.org/D10080
Kyle Lippincott <spectral@google.com> [Wed, 03 Feb 2021 16:33:10 -0800] rev 46607
revlog: add a mechanism to verify expected file position before appending
If someone uses `hg debuglocks`, or some non-hg process writes to the .hg
directory without respecting the locks, or if the repo's on a networked
filesystem, it's possible for the revlog code to write out corrupted data.
The form of this corruption can vary depending on what data was written and how
that happened. We are in the "networked filesystem" case (though I've had users
also do this to themselves with the "`hg debuglocks`" scenario), and most often
see this with the changelog. What ends up happening is we produce two items
(let's call them rev1 and rev2) in the .i file that have the same linkrev,
baserev, and offset into the .d file, while the data in the .d file is appended
properly. rev2's compressed_size is accurate for rev2, but when we go to
decompress the data in the .d file, we use the offset that's recorded in the
index file, which is the same as rev1, and attempt to decompress
rev2.compressed_size bytes of rev1's data. This usually does not succeed. :)
When using inline data, this also fails, though I haven't investigated why too
closely. This shows up as a "patch decode" error. I believe what's happening
there is that we're basically ignoring the offset field, getting the data
properly, but since baserev != rev, it thinks this is a delta based on rev
(instead of a full text) and can't actually apply it as such.
For now, I'm going to make this an optional component and default it to entirely
off. I may increase the default severity of this in the future, once I've
enabled it for my users and we gain more experience with it. Luckily, most of my
users have a versioned filesystem and can roll back to before the corruption has
been written, it's just a hassle to do so and not everyone knows how (so it's a
support burden). Users on other filesystems will not have that luxury, and this
can cause them to have a corrupted repository that they are unlikely to know how
to resolve, and they'll see this as a data-loss event. Refusing to create the
corruption is a much better user experience.
This mechanism is not perfect. There may be false-negatives (racy writes that
are not detected). There should not be any false-positives (non-racy writes that
are detected as such). This is not a mechanism that makes putting a repo on a
networked filesystem "safe" or "supported", just *less* likely to cause
corruption.
Differential Revision: https://phab.mercurial-scm.org/D9952
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 22:58:30 -0800] rev 46606
narrow: remove assertion about working copy being clean
The user can always modify the working copy, including while they're
running `hg tracked --remove-include <path>`. Nothing really bad
happens when they do that, and we already have code for printing a
nice warning, so we can safely remove the assertion we had.
Differential Revision: https://phab.mercurial-scm.org/D10063
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 22:55:26 -0800] rev 46605
tests: demonstrate assertion error when modifying working copy while narrowing
Differential Revision: https://phab.mercurial-scm.org/D10062
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Feb 2021 23:23:35 +0100] rev 46604
ci: test real dependency installation for pip
In the past, the pip smoke test inhibited actual dependency
installation, but that fails in different environments for setuptools
itself. Since it isn't what we actually want to test (which is pip
install), allow this to call home, if HGTESTS_ALLOW_NETIO=1 is set
in the environment.
Differential Revision: https://phab.mercurial-scm.org/D9950
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 20:40:19 +0100] rev 46603
rust: Add some unit tests for parse_byte_size in config
Differential Revision: https://phab.mercurial-scm.org/D10022
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 20:24:04 +0100] rev 46602
rust: Move config value parsing functions to a new module
Differential Revision: https://phab.mercurial-scm.org/D10021
Simon Sapin <simon.sapin@octobus.net> [Tue, 16 Feb 2021 13:08:37 +0100] rev 46601
rhg: Add support for the blackbox extension
Only `command` and `commandfinish` events are logged.
The `dirty`, `logsource`, `track` and `ignore` configuration items
are not supported yet.
To indicate commands executed without Python, a `(rust) ` prefix is added
in corresponding log messages.
Differential Revision: https://phab.mercurial-scm.org/D10012
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 13:00:25 +0100] rev 46600
blackbox: Remove misleading quotes in config example
This example previously looked like quotes were part of configuration file
syntax, and the parsed `date-format` value was the part inside of them.
This is not the case: config syntax only parses quotes in list values.
Instead using that config would result in literal quotes being written to
`.hg/blackbox.log` as part of the date format.
This changes the example to what was probably intended.
Differential Revision: https://phab.mercurial-scm.org/D10011
Simon Sapin <simon.sapin@octobus.net> [Thu, 11 Feb 2021 15:51:11 +0100] rev 46599
rust: Add a log file rotation utility
This is ported to Rust from `mercurial/loggingutil.py`.
The "builder" pattern is used to make it visible at call sites what the two
numeric parameters mean. In Python they might simply by keyword arguments.
Differential Revision: https://phab.mercurial-scm.org/D10010
Simon Sapin <simon.sapin@octobus.net> [Tue, 16 Feb 2021 15:22:20 +0100] rev 46598
rust: Add a `ConfigValueParseError` variant to common errors
Configuration files are parsed into sections of key/value pairs when
they are read, but at that point values are still arbitrary bytes.
Only when a value is accessed by various parts of the code do we know
its expected type and syntax, so values are parsed at that point.
Let’s make a new error type for this latter kind of parsing error,
and add a variant to the common `HgError` so that most code can propagate it
without much boilerplate.
Differential Revision: https://phab.mercurial-scm.org/D10009
Simon Sapin <simon.sapin@octobus.net> [Tue, 16 Feb 2021 13:55:31 +0100] rev 46597
rust: Add config parsing support for more value types
* Rust `str` (ASCII or UTF-8)
* Integer
* Byte quantities
Differential Revision: https://phab.mercurial-scm.org/D10008
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 11:21:34 +0100] rev 46596
rust: Introduce a get_bytes_from_os_str utility function
It does the same as get_bytes_from_path but takes an `OsStr`
instead of a `Path`. The implementation is the same so using either
ends up correct but the function name suggests it’s not.
Differential Revision: https://phab.mercurial-scm.org/D10007
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 12:24:53 +0100] rev 46595
rust: Make `DirstateParents`’s fields typed `Node`s
Instead of plain byte arrays.
Differential Revision: https://phab.mercurial-scm.org/D10006
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 12:06:56 +0100] rev 46594
rust: Rewrite dirstate parsing usin the `bytes-cast` crate
Differential Revision: https://phab.mercurial-scm.org/D10005
Simon Sapin <simon.sapin@octobus.net> [Mon, 15 Feb 2021 20:13:09 +0100] rev 46593
rhg: Move `Repo` object creation into `main()`
… rather than in each sub-command that needs a local repository.
This will allow accessing e.g. `.hg/blackbox.log` before dispatching
to sub-commands.
Differential Revision: https://phab.mercurial-scm.org/D10004
Simon Sapin <simon.sapin@octobus.net> [Mon, 15 Feb 2021 20:05:32 +0100] rev 46592
rhg: Group values passed to every sub-command into a struct
The set of which values this is is evidently not stable yet,
so this will make changes easier. Also it is growing, and the function
signatures are getting out hand.
Differential Revision: https://phab.mercurial-scm.org/D10003
Simon Sapin <simon.sapin@octobus.net> [Fri, 12 Feb 2021 16:54:30 +0100] rev 46591
rhg: Remove error message on unsupported CLI arguments
Like in other "unsupported" cases that return a specific exit code
Differential Revision: https://phab.mercurial-scm.org/D10002
Simon Sapin <simon.sapin@octobus.net> [Tue, 05 Jan 2021 21:46:21 +0100] rev 46590
copies-rust: send PyBytes values back be dropped ino the parent thread
… instead of acquiring the GIL in the Rust thread in the Drop impl
This commit is based on the premise that crossbeam-channel
with unbounded send and non-blocking receive is faster than
a contended GIL, but that remains to be measured.
Differential Revision: https://phab.mercurial-scm.org/D9686
Simon Sapin <simon-commits@exyr.org> [Thu, 26 Nov 2020 18:23:51 +0100] rev 46589
copies-rust: introduce PyBytesWithData to reduce GIL requirement
See explanations in new doc-comments.
Differential Revision: https://phab.mercurial-scm.org/D9685
Simon Sapin <simon.sapin@octobus.net> [Wed, 06 Jan 2021 14:09:01 +0100] rev 46588
copies-rust: move CPU-heavy Rust processing into a child thread
… that runs in parallel with the parent thread fetching data.
This can be disabled through a new config. CLI example:
hg --config=devel.copy-tracing.multi-thread=no
For now both threads use the GIL, later commits will reduce this.
Differential Revision: https://phab.mercurial-scm.org/D9684
Simon Sapin <simon.sapin@octobus.net> [Tue, 05 Jan 2021 21:02:00 +0100] rev 46587
copies-rust: split up combine_changeset_copies function into a struct
… such that each iteration of its former loop is now a method call,
with the caller driving the loop.
This entirely removes the need for the `DataHolder` hack:
the method now takes a `ChangedFiles<'_>` parameter that borrows
a bytes buffer that can be owned by the caller’s stack frame,
just for the duration of that call.
Differential Revision: https://phab.mercurial-scm.org/D9683
Simon Sapin <simon.sapin@octobus.net> [Wed, 23 Dec 2020 11:48:16 +0100] rev 46586
copies-rust: extract generic map merge logic from merge_copies_dict
This deduplicates the copy-tracing-specific logic
Differential Revision: https://phab.mercurial-scm.org/D9682
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 12:34:59 +0100] rev 46585
copies-rust: use imrs::OrdSet instead of imrs::HashSet
This yield small speedup all over the board, and a large one for our slower
cases:
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 2.034596 s, 1.465264 s, -0.569332 s, × 0.7202, 15 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 0.694030 s, 0.690376 s, -0.003654 s, × 0.9947, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 4.407723 s, 4.011322 s, -0.396401 s, × 0.9101, 11 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 0.574355 s, 0.573541 s, -0.000814 s, × 0.9986, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 4.457827 s, 3.981133 s, -0.476694 s, × 0.8931, 10 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.351696 s, 3.996647 s, -0.355049 s, × 0.9184, 11 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 80.828689 s, 50.244975 s, -30.583714 s, × 0.6216, 219 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 34.094064 s, 20.030023 s, -14.064041 s, × 0.5875, 52 µs/rev
private : 459513 revs, 27.435529 s, 24.490825 s, -2.944704 s, × 0.8927, 53 µs/rev
We also got significantly faster than the implementation using is_ancestors
except for one of our reference case:
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.011322 s, -1.126847 s, × 0.7807, 11 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 3.981133 s, -1.146676 s, × 0.7764, 10 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 3.996647 s, -0.974489 s, × 0.8040, 11 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.520607 s, -0.221071 s, × 0.8731, 7 µs/rev
private : 459513 revs, 37.179470 s, 24.490825 s, -12.688645 s, × 0.6587, 53 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 50.244975 s, +9.930153 s, × 1.2463, 219 µs/rev
Below are three different benchmark comparing this changeset to:
* the previous one,
* the implementation based on `is_anscestors`,
* the filelog copy tracing.
### Compared to the previous ones
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mercurial x_revs_x_added_0_copies
ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000043 s, 0.000041 s, -0.000002 s, × 0.9535, 41 µs/rev
mercurial x_revs_x_added_x_copies
2b1c78674230 0c1d10351869 : 6 revs, 0.000114 s, 0.000116 s, +0.000002 s, × 1.0175, 19 µs/rev
mercurial x000_revs_x000_added_x_copies
81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004899 s, 0.004933 s, +0.000034 s, × 1.0069, 4 µs/rev
pypy x_revs_x_added_0_copies
aed021ee8ae8 099ed31b181b : 9 revs, 0.000196 s, 0.000193 s, -0.000003 s, × 0.9847, 21 µs/rev
pypy x_revs_x000_added_0_copies
4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000048 s, -0.000001 s, × 0.9796, 48 µs/rev
pypy x_revs_x_added_x_copies
ac52eb7bbbb0 72e022663155 : 7 revs, 0.000117 s, 0.000114 s, -0.000003 s, × 0.9744, 16 µs/rev
pypy x_revs_x00_added_x_copies
c3b14617fbd7 ace7255d9a26 : 1 revs, 0.6f1f4a s, 0.000319 s, -0.000003 s, × 0.9907, 319 µs/rev
pypy x_revs_x000_added_x000_copies
df6f7a526b60 a83dc6a2d56f : 6 revs, 0.011856 s, 0.012025 s, +0.000169 s, × 1.0143, 2004 µs/rev
pypy x000_revs_xx00_added_0_copies
89a76aede314 2f22446ff07e : 4785 revs, 0.050992 s, 0.050525 s, -0.000467 s, × 0.9908, 10 µs/rev
pypy x000_revs_x000_added_x_copies
8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.087444 s, 0.085713 s, -0.001731 s, × 0.9802, 12 µs/rev
pypy x000_revs_x000_added_x000_copies
89a76aede314 7b3dda341c84 : 5441 revs, 0.062487 s, 0.061825 s, -0.000662 s, × 0.9894, 11 µs/rev
pypy x0000_revs_x_added_0_copies
d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.634909 s, 0.543998 s, -0.090911 s, × 0.8568, 12 µs/rev
pypy x0000_revs_xx000_added_0_copies
bf2c629d0071 4ffed77c095c : 2 revs, 0.013360 s, 0.013455 s, +0.000095 s, × 1.0071, 6727 µs/rev
pypy x0000_revs_xx000_added_x000_copies
08ea3258278e d9fa043f30c0 : 11316 revs, 0.120775 s, 0.117479 s, -0.003296 s, × 0.9727, 10 µs/rev
netbeans x_revs_x_added_0_copies
fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000084 s, -0.000001 s, × 0.9882, 42 µs/rev
netbeans x_revs_x000_added_0_copies
6f360122949f 20eb231cc7d0 : 2 revs, 0.000108 s, 0.000111 s, +0.000003 s, × 1.0278, 55 µs/rev
netbeans x_revs_x_added_x_copies
1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000176 s, 0.000175 s, -0.000001 s, × 0.9943, 58 µs/rev
netbeans x_revs_x00_added_x_copies
35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000747 s, 0.000732 s, -0.000015 s, × 0.9799, 81 µs/rev
netbeans x000_revs_xx00_added_0_copies
eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010128 s, 0.010062 s, -0.000066 s, × 0.9935, 7 µs/rev
netbeans x000_revs_x000_added_x_copies
e2063d266acd 6081d72689dc : 1533 revs, 0.015899 s, 0.015659 s, -0.000240 s, × 0.9849, 10 µs/rev
netbeans x000_revs_x000_added_x000_copies
ff453e9fee32 411350406ec2 : 5750 revs, 0.062215 s, 0.062744 s, +0.000529 s, × 1.0085, 10 µs/rev
netbeans x0000_revs_xx000_added_x000_copies
588c2d1ced70 1aad62e59ddd : 66949 revs, 0.521004 s, 0.499449 s, -0.021555 s, × 0.9586, 7 µs/rev
mozilla-central x_revs_x_added_0_copies
3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000090 s, 0.000088 s, -0.000002 s, × 0.9778, 44 µs/rev
mozilla-central x_revs_x000_added_0_copies
dd390860c6c9 40d0c5bed75d : 8 revs, 0.000264 s, 0.000266 s, +0.000002 s, × 1.0076, 33 µs/rev
mozilla-central x_revs_x_added_x_copies
8d198483ae3b 14207ffc2b2f : 9 revs, 0.000186 s, 0.000182 s, -0.000004 s, × 0.9785, 20 µs/rev
mozilla-central x_revs_x00_added_x_copies
98cbc58cc6bc 446a150332c3 : 7 revs, 0.000660 s, 0.000656 s, -0.000004 s, × 0.9939, 93 µs/rev
mozilla-central x_revs_x000_added_x000_copies
3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003542 s, 0.003389 s, -0.000153 s, × 0.9568, 1129 µs/rev
mozilla-central x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.071574 s, 0.075882 s, +0.004308 s, × 1.0602, 12647 µs/rev
mozilla-central x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006498 s, 0.006479 s, -0.000019 s, × 0.9971, 4 µs/rev
mozilla-central x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005206 s, 0.004889 s, -0.000317 s, × 0.9391, 119 µs/rev
mozilla-central x000_revs_x000_added_x000_copies
7c97034feb78 4407bd0c6330 : 7839 revs, 0.065535 s, 0.064394 s, -0.001141 s, × 0.9826, 8 µs/rev
mozilla-central x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027139 s, 0.026815 s, -0.000324 s, × 0.9881, 43 µs/rev
mozilla-central x0000_revs_xx000_added_x000_copies
f78c615a656c 96a38b690156 : 30263 revs, 0.201924 s, 0.cc85eb s, +0.000940 s, × 1.0047, 6 µs/rev
mozilla-central x00000_revs_x0000_added_x0000_copies
6832ae71433c 4c222a1d9a00 : 153721 revs, 1.257201 s, 1.219445 s, -0.037756 s, × 0.9700, 7 µs/rev
mozilla-central x00000_revs_x00000_added_x000_copies
76caed42cf7c 1daa622bbe42 : 204976 revs, 1.663045 s, 1.613857 s, -0.049188 s, × 0.9704, 7 µs/rev
mozilla-try x_revs_x_added_0_copies
aaf6dde0deb8 9790f499805a : 2 revs, 0.000866 s, 0.000873 s, +0.000007 s, × 1.0081, 436 µs/rev
mozilla-try x_revs_x000_added_0_copies
d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000883 s, 0.000885 s, +0.000002 s, × 1.0023, 442 µs/rev
mozilla-try x_revs_x_added_x_copies
092fcca11bdb 936255a0384a : 4 revs, 0.000163 s, 0.000161 s, -0.000002 s, × 0.9877, 40 µs/rev
mozilla-try x_revs_x00_added_x_copies
b53d2fadbdb5 017afae788ec : 2 revs, 0.001139 s, 0.001138 s, -0.000001 s, × 0.9991, 569 µs/rev
mozilla-try x_revs_x000_added_x000_copies
20408ad61ce5 6f0ee96e21ad : 1 revs, 0.032753 s, 0.033399 s, +0.000646 s, × 1.0197, 33399 µs/rev
mozilla-try x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.073266 s, 0.075445 s, +0.002179 s, × 1.0297, 12574 µs/rev
mozilla-try x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006567 s, 0.006456 s, -0.000111 s, × 0.9831, 4 µs/rev
mozilla-try x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005427 s, 0.005462 s, +0.000035 s, × 1.0064, 133 µs/rev
mozilla-try x000_revs_x000_added_x000_copies
1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.064058 s, 0.064117 s, +0.000059 s, × 1.0009, 9 µs/rev
mozilla-try x0000_revs_x_added_0_copies
63519bfd42ee a36a2a865d92 : 40314 revs, 0.303320 s, 0.297563 s, -0.005757 s, × 0.9810, 7 µs/rev
mozilla-try x0000_revs_x_added_x_copies
9fe69ff0762d bcabf2a78927 : 38690 revs, 0.288456 s, 0.282463 s, -0.005993 s, × 0.9792, 7 µs/rev
mozilla-try x0000_revs_xx000_added_x_copies
156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.085925 s, 0.084038 s, -0.001887 s, × 0.9780, 9 µs/rev
mozilla-try x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027302 s, 0.027306 s, +0.000004 s, × 1.0001, 44 µs/rev
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 2.034596 s, 1.465264 s, -0.569332 s, × 0.7202, 15 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 0.694030 s, 0.690376 s, -0.003654 s, × 0.9947, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 4.407723 s, 4.011322 s, -0.396401 s, × 0.9101, 11 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 0.574355 s, 0.573541 s, -0.000814 s, × 0.9986, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 4.457827 s, 3.981133 s, -0.476694 s, × 0.8931, 10 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.351696 s, 3.996647 s, -0.355049 s, × 0.9184, 11 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.570065 s, 1.520607 s, -0.049458 s, × 0.9685, 7 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 80.828689 s, 50.244975 s, -30.583714 s, × 0.6216, 219 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 34.094064 s, 20.030023 s, -14.064041 s, × 0.5875, 52 µs/rev
private : 459513 revs, 27.435529 s, 24.490825 s, -2.944704 s, × 0.8927, 53 µs/rev
### Compared to the implementation using `is_anscestor`
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mercurial x_revs_x_added_0_copies
ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000042 s, 0.000041 s, -0.000001 s, × 0.9762, 41 µs/rev
mercurial x_revs_x_added_x_copies
2b1c78674230 0c1d10351869 : 6 revs, 0.000110 s, 0.000116 s, +0.000006 s, × 1.0545, 19 µs/rev
mercurial x000_revs_x000_added_x_copies
81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004945 s, 0.004933 s, -0.000012 s, × 0.9976, 4 µs/rev
pypy x_revs_x_added_0_copies
aed021ee8ae8 099ed31b181b : 9 revs, 0.000192 s, 0.000193 s, +0.000001 s, × 1.0052, 21 µs/rev
pypy x_revs_x000_added_0_copies
4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000048 s, -0.000001 s, × 0.9796, 48 µs/rev
pypy x_revs_x_added_x_copies
ac52eb7bbbb0 72e022663155 : 7 revs, 0.000112 s, 0.000114 s, +0.000002 s, × 1.0179, 16 µs/rev
pypy x_revs_x00_added_x_copies
c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000323 s, 0.000319 s, -0.000004 s, × 0.9876, 319 µs/rev
pypy x_revs_x000_added_x000_copies
df6f7a526b60 a83dc6a2d56f : 6 revs, 0.010042 s, 0.012025 s, +0.001983 s, × 1.1975, 2004 µs/rev
pypy x000_revs_xx00_added_0_copies
89a76aede314 2f22446ff07e : 4785 revs, 0.049813 s, 0.050525 s, +0.000712 s, × 1.0143, 10 µs/rev
pypy x000_revs_x000_added_x_copies
8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.079937 s, 0.085713 s, +0.005776 s, × 1.0723, 12 µs/rev
pypy x000_revs_x000_added_x000_copies
89a76aede314 7b3dda341c84 : 5441 revs, 0.059412 s, 0.061825 s, +0.002413 s, × 1.0406, 11 µs/rev
pypy x0000_revs_x_added_0_copies
d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.533769 s, 0.543998 s, +0.010229 s, × 1.0192, 12 µs/rev
pypy x0000_revs_xx000_added_0_copies
bf2c629d0071 4ffed77c095c : 2 revs, 0.013147 s, 0.013455 s, +0.000308 s, × 1.0234, 6727 µs/rev
pypy x0000_revs_xx000_added_x000_copies
08ea3258278e d9fa043f30c0 : 11316 revs, 0.110680 s, 0.117479 s, +0.006799 s, × 1.0614, 10 µs/rev
netbeans x_revs_x_added_0_copies
fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000084 s, -0.000001 s, × 0.9882, 42 µs/rev
netbeans x_revs_x000_added_0_copies
6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000111 s, +0.000004 s, × 1.0374, 55 µs/rev
netbeans x_revs_x_added_x_copies
1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000175 s, 0.000175 s, +0.000000 s, × 1.0000, 58 µs/rev
netbeans x_revs_x00_added_x_copies
35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000720 s, 0.000732 s, +0.000012 s, × 1.0167, 81 µs/rev
netbeans x000_revs_xx00_added_0_copies
eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010019 s, 0.010062 s, +0.000043 s, × 1.0043, 7 µs/rev
netbeans x000_revs_x000_added_x_copies
e2063d266acd 6081d72689dc : 1533 revs, 0.015602 s, 0.015659 s, +0.000057 s, × 1.0037, 10 µs/rev
netbeans x000_revs_x000_added_x000_copies
ff453e9fee32 411350406ec2 : 5750 revs, 0.058759 s, 0.062744 s, +0.003985 s, × 1.0678, 10 µs/rev
netbeans x0000_revs_xx000_added_x000_copies
588c2d1ced70 1aad62e59ddd : 66949 revs, 0.491550 s, 0.499449 s, +0.007899 s, × 1.0161, 7 µs/rev
mozilla-central x_revs_x_added_0_copies
3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000087 s, 0.000088 s, +0.000001 s, × 1.0115, 44 µs/rev
mozilla-central x_revs_x000_added_0_copies
dd390860c6c9 40d0c5bed75d : 8 revs, 0.000268 s, 0.000266 s, -0.000002 s, × 0.9925, 33 µs/rev
mozilla-central x_revs_x_added_x_copies
8d198483ae3b 14207ffc2b2f : 9 revs, 0.000181 s, 0.000182 s, +0.000001 s, × 1.0055, 20 µs/rev
mozilla-central x_revs_x00_added_x_copies
98cbc58cc6bc 446a150332c3 : 7 revs, 0.000661 s, 0.000656 s, -0.000005 s, × 0.9924, 93 µs/rev
mozilla-central x_revs_x000_added_x000_copies
3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003256 s, 0.003389 s, +0.000133 s, × 1.0408, 1129 µs/rev
mozilla-central x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.066749 s, 0.075882 s, +0.009133 s, × 1.1368, 12647 µs/rev
mozilla-central x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006462 s, 0.006479 s, +0.000017 s, × 1.0026, 4 µs/rev
mozilla-central x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.004919 s, 0.004889 s, -0.000030 s, × 0.9939, 119 µs/rev
mozilla-central x000_revs_x000_added_x000_copies
7c97034feb78 4407bd0c6330 : 7839 revs, 0.062421 s, 0.064394 s, +0.001973 s, × 1.0316, 8 µs/rev
mozilla-central x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.026633 s, 0.026815 s, +0.000182 s, × 1.0068, 43 µs/rev
mozilla-central x0000_revs_xx000_added_x000_copies
f78c615a656c 96a38b690156 : 30263 revs, 0.197792 s, 0.cc85eb s, +0.005072 s, × 1.0256, 6 µs/rev
mozilla-central x00000_revs_x0000_added_x0000_copies
6832ae71433c 4c222a1d9a00 : 153721 revs, 1.259970 s, 1.219445 s, -0.040525 s, × 0.9678, 7 µs/rev
mozilla-central x00000_revs_x00000_added_x000_copies
76caed42cf7c 1daa622bbe42 : 204976 revs, 1.689184 s, 1.613857 s, -0.075327 s, × 0.9554, 7 µs/rev
mozilla-try x_revs_x_added_0_copies
aaf6dde0deb8 9790f499805a : 2 revs, 0.000865 s, 0.000873 s, +0.000008 s, × 1.0092, 436 µs/rev
mozilla-try x_revs_x000_added_0_copies
d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000893 s, 0.000885 s, -0.000008 s, × 0.9910, 442 µs/rev
mozilla-try x_revs_x_added_x_copies
092fcca11bdb 936255a0384a : 4 revs, 0.000172 s, 0.000161 s, -0.000011 s, × 0.9360, 40 µs/rev
mozilla-try x_revs_x00_added_x_copies
b53d2fadbdb5 017afae788ec : 2 revs, 0.001159 s, 0.001138 s, -0.000021 s, × 0.9819, 569 µs/rev
mozilla-try x_revs_x000_added_x000_copies
20408ad61ce5 6f0ee96e21ad : 1 revs, 0.031621 s, 0.033399 s, +0.001778 s, × 1.0562, 33399 µs/rev
mozilla-try x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.068571 s, 0.075445 s, +0.006874 s, × 1.1002, 12574 µs/rev
mozilla-try x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006452 s, 0.006456 s, +0.000004 s, × 1.0006, 4 µs/rev
mozilla-try x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005443 s, 0.005462 s, +0.000019 s, × 1.0035, 133 µs/rev
mozilla-try x000_revs_x000_added_x000_copies
1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.063180 s, 0.064117 s, +0.000937 s, × 1.0148, 9 µs/rev
mozilla-try x0000_revs_x_added_0_copies
63519bfd42ee a36a2a865d92 : 40314 revs, 0.293564 s, 0.297563 s, +0.003999 s, × 1.0136, 7 µs/rev
mozilla-try x0000_revs_x_added_x_copies
9fe69ff0762d bcabf2a78927 : 38690 revs, 0.286595 s, 0.282463 s, -0.004132 s, × 0.9856, 7 µs/rev
mozilla-try x0000_revs_xx000_added_x_copies
156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.083256 s, 0.084038 s, +0.000782 s, × 1.0094, 9 µs/rev
mozilla-try x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027282 s, 0.027306 s, +0.000024 s, × 1.0009, 44 µs/rev
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.343373 s, 1.465264 s, +0.121891 s, × 1.0907, 15 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 0.665737 s, 0.690376 s, +0.024639 s, × 1.0370, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.011322 s, -1.126847 s, × 0.7807, 11 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 0.573276 s, 0.573541 s, +0.000265 s, × 1.0005, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 3.981133 s, -1.146676 s, × 0.7764, 10 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 3.996647 s, -0.974489 s, × 0.8040, 11 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.520607 s, -0.221071 s, × 0.8731, 7 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 50.244975 s, +9.930153 s, × 1.2463, 219 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 20.048029 s, 20.030023 s, -0.018006 s, × 0.9991, 52 µs/rev
private : 459513 revs, 37.179470 s, 24.490825 s, -12.688645 s, × 0.6587, 53 µs/rev
### Compared to the filelog based copy tracing
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mercurial x_revs_x_added_0_copies
ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000918 s, 0.000041 s, -0.000877 s, × 0.044662, 40 µs/rev
mercurial x_revs_x_added_x_copies
2b1c78674230 0c1d10351869 : 6 revs, 0.001853 s, 0.000116 s, -0.001737 s, × 0.062601, 19 µs/rev
mercurial x000_revs_x000_added_x_copies
81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.018994 s, 0.004933 s, -0.014061 s, × 0.259714, 4 µs/rev
pypy x_revs_x_added_0_copies
aed021ee8ae8 099ed31b181b : 9 revs, 0.001532 s, 0.000193 s, -0.001339 s, × 0.125979, 21 µs/rev
pypy x_revs_x000_added_0_copies
4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.210633 s, 0.000048 s, -0.210585 s, × 0.000228, 47 µs/rev
pypy x_revs_x_added_x_copies
ac52eb7bbbb0 72e022663155 : 7 revs, 0.017041 s, 0.000114 s, -0.016927 s, × 0.006690, 16 µs/rev
pypy x_revs_x00_added_x_copies
c3b14617fbd7 ace7255d9a26 : 1 revs, 0.019474 s, 0.000319 s, -0.019155 s, × 0.016381, 318 µs/rev
pypy x_revs_x000_added_x000_copies
df6f7a526b60 a83dc6a2d56f : 6 revs, 0.763136 s, 0.012025 s, -0.751111 s, × 0.015757, 2003 µs/rev
pypy x000_revs_xx00_added_0_copies
89a76aede314 2f22446ff07e : 4785 revs, 1.226569 s, 0.050525 s, -1.176044 s, × 0.041192, 10 µs/rev
pypy x000_revs_x000_added_x_copies
8a3b5bfd266e 2c68e87c3efe : 6780 revs, 1.314572 s, 0.085713 s, -1.228859 s, × 0.065202, 12 µs/rev
pypy x000_revs_x000_added_x000_copies
89a76aede314 7b3dda341c84 : 5441 revs, 1.686022 s, 0.061825 s, -1.624197 s, × 0.036669, 11 µs/rev
pypy x0000_revs_x_added_0_copies
d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.001110 s, 0.543998 s, +0.542888 s, × 490.0882, 12 µs/rev
pypy x0000_revs_xx000_added_0_copies
bf2c629d0071 4ffed77c095c : 2 revs, 1.106265 s, 0.013455 s, -1.092810 s, × 0.012163, 6724 µs/rev
pypy x0000_revs_xx000_added_x000_copies
08ea3258278e d9fa043f30c0 : 11316 revs, 1.377398 s, 0.117479 s, -1.259919 s, × 0.085291, 10 µs/rev
netbeans x_revs_x_added_0_copies
fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.028579 s, 0.000084 s, -0.028495 s, × 0.002939, 41 µs/rev
netbeans x_revs_x000_added_0_copies
6f360122949f 20eb231cc7d0 : 2 revs, 0.133644 s, 0.000111 s, -0.133533 s, × 0.000831, 55 µs/rev
netbeans x_revs_x_added_x_copies
1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.025988 s, 0.000175 s, -0.025813 s, × 0.006734, 58 µs/rev
netbeans x_revs_x00_added_x_copies
35be93ba1e2c 9eec5e90c05f : 9 revs, 0.053011 s, 0.000732 s, -0.052279 s, × 0.013808, 81 µs/rev
netbeans x000_revs_xx00_added_0_copies
eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.037858 s, 0.010062 s, -0.027796 s, × 0.265783, 7 µs/rev
netbeans x000_revs_x000_added_x_copies
e2063d266acd 6081d72689dc : 1533 revs, 0.200517 s, 0.015659 s, -0.184858 s, × 0.078093, 10 µs/rev
netbeans x000_revs_x000_added_x000_copies
ff453e9fee32 411350406ec2 : 5750 revs, 0.964542 s, 0.062744 s, -0.901798 s, × 0.065051, 10 µs/rev
netbeans x0000_revs_xx000_added_x000_copies
588c2d1ced70 1aad62e59ddd : 66949 revs, 3.976210 s, 0.499449 s, -3.476761 s, × 0.125609, 7 µs/rev
mozilla-central x_revs_x_added_0_copies
3697f962bb7b 7015fcdd43a2 : 2 revs, 0.025172 s, 0.000088 s, -0.025084 s, × 0.003496, 43 µs/rev
mozilla-central x_revs_x000_added_0_copies
dd390860c6c9 40d0c5bed75d : 8 revs, 0.145144 s, 0.000266 s, -0.144878 s, × 0.001833, 33 µs/rev
mozilla-central x_revs_x_added_x_copies
8d198483ae3b 14207ffc2b2f : 9 revs, 0.026139 s, 0.000182 s, -0.025957 s, × 0.006963, 20 µs/rev
mozilla-central x_revs_x00_added_x_copies
98cbc58cc6bc 446a150332c3 : 7 revs, 0.086184 s, 0.000656 s, -0.085528 s, × 0.007612, 93 µs/rev
mozilla-central x_revs_x000_added_x000_copies
3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.203187 s, 0.003389 s, -0.199798 s, × 0.016679, 1129 µs/rev
mozilla-central x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 2.255675 s, 0.075882 s, -2.179793 s, × 0.033640, 12644 µs/rev
mozilla-central x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.091147 s, 0.006479 s, -0.084668 s, × 0.071083, 4 µs/rev
mozilla-central x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.767530 s, 0.004889 s, -0.762641 s, × 0.006370, 119 µs/rev
mozilla-central x000_revs_x000_added_x000_copies
7c97034feb78 4407bd0c6330 : 7839 revs, 1.185330 s, 0.064394 s, -1.120936 s, × 0.054326, 8 µs/rev
mozilla-central x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 6.831179 s, 0.026815 s, -6.804364 s, × 0.003925, 43 µs/rev
mozilla-central x0000_revs_xx000_added_x000_copies
f78c615a656c 96a38b690156 : 30263 revs, 3.373551 s, 0.cc85eb s, -3.170687 s, × 0.060134, 6 µs/rev
mozilla-central x00000_revs_x0000_added_x0000_copies
6832ae71433c 4c222a1d9a00 : 153721 revs, 16.540604 s, 1.219445 s, -15.321159 s, × 0.073724, 7 µs/rev
mozilla-central x00000_revs_x00000_added_x000_copies
76caed42cf7c 1daa622bbe42 : 204976 revs, 21.527155 s, 1.613857 s, -19.913298 s, × 0.074968, 7 µs/rev
mozilla-try x_revs_x_added_0_copies
aaf6dde0deb8 9790f499805a : 2 revs, 0.084540 s, 0.000873 s, -0.083667 s, × 0.010326, 436 µs/rev
mozilla-try x_revs_x000_added_0_copies
d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.507151 s, 0.000885 s, -0.506266 s, × 0.001745, 442 µs/rev
mozilla-try x_revs_x_added_x_copies
092fcca11bdb 936255a0384a : 4 revs, 0.021748 s, 0.000161 s, -0.021587 s, × 0.007403, 40 µs/rev
mozilla-try x_revs_x00_added_x_copies
b53d2fadbdb5 017afae788ec : 2 revs, 0.236786 s, 0.001138 s, -0.235648 s, × 0.004806, 568 µs/rev
mozilla-try x_revs_x000_added_x000_copies
20408ad61ce5 6f0ee96e21ad : 1 revs, 1.111735 s, 0.033399 s, -1.078336 s, × 0.030042, 33365 µs/rev
mozilla-try x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 2.228030 s, 0.075445 s, -2.152585 s, × 0.033862, 12572 µs/rev
mozilla-try x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.091289 s, 0.006456 s, -0.084833 s, × 0.070720, 4 µs/rev
mozilla-try x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.771361 s, 0.005462 s, -0.765899 s, × 0.007081, 133 µs/rev
mozilla-try x000_revs_x000_added_x000_copies
1346fd0130e4 4c65cbdabc1f : 6657 revs, 1.189483 s, 0.064117 s, -1.125366 s, × 0.053903, 9 µs/rev
mozilla-try x0000_revs_x_added_0_copies
63519bfd42ee a36a2a865d92 : 40314 revs, 0.089756 s, 0.297563 s, +0.207807 s, × 3.315244, 7 µs/rev
mozilla-try x0000_revs_x_added_x_copies
9fe69ff0762d bcabf2a78927 : 38690 revs, 0.084888 s, 0.282463 s, +0.197575 s, × 3.327479, 7 µs/rev
mozilla-try x0000_revs_xx000_added_x_copies
156f6e2674f2 4d0f2c178e66 : 8598 revs, 7.682665 s, 0.084038 s, -7.598627 s, × 0.010939, 9 µs/rev
mozilla-try x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 6.894680 s, 0.027306 s, -6.867374 s, × 0.003960, 44 µs/rev
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 7.650907 s, 1.465264 s, -6.185643 s, × 0.191515, 15 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 9.898788 s, 0.690376 s, -9.208412 s, × 0.069743, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 0.092208 s, 4.011322 s, +3.919114 s, × 43.50297, 11 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 28.130003 s, 0.573541 s, -27.556462 s, × 0.020389, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 0.093366 s, 3.981133 s, +3.887767 s, × 42.64007, 10 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 0.229368 s, 3.996647 s, +3.767279 s, × 17.42460, 11 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 19.624851 s, 1.520607 s, -18.104244 s, × 0.077484, 7 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 22.070126 s, 50.244975 s, +28.174849 s, × 2.276606, 219 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 26.006524 s, 20.030023 s, -5.976501 s, × 0.770192, 52 µs/rev
private : 459513 revs, 18.704612 s, 24.490825 s, +5.786213 s, × 1.309347, 53 µs/rev
Differential Revision: https://phab.mercurial-scm.org/D9656
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 11:20:31 +0100] rev 46584
copies-rust: use simpler overwrite when value on both side are identical
If the value are the same, their "overwritten" set is the same and we don't need
to combine them.
It helps our slower cases
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 86.722016 s, 80.828689 s, -5.893327 s, × 0.9320, 352 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 35.113727 s, 34.094064 s, -1.019663 s, × 0.9710, 89 µs/rev
Full comparison with the previous revision below:
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mercurial x_revs_x_added_0_copies
ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000043 s, 0.000043 s, +0.000000 s, × 1.0000, 43 µs/rev
mercurial x_revs_x_added_x_copies
2b1c78674230 0c1d10351869 : 6 revs, 0.000114 s, 0.000114 s, +0.000000 s, × 1.0000, 19 µs/rev
mercurial x000_revs_x000_added_x_copies
81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004899 s, 0.004899 s, +0.000000 s, × 1.0000, 4 µs/rev
pypy x_revs_x_added_0_copies
aed021ee8ae8 099ed31b181b : 9 revs, 0.000196 s, 0.000196 s, +0.000000 s, × 1.0000, 21 µs/rev
pypy x_revs_x000_added_0_copies
4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000050 s, 0.000049 s, -0.000001 s, × 0.9800, 49 µs/rev
pypy x_revs_x_added_x_copies
ac52eb7bbbb0 72e022663155 : 7 revs, 0.000125 s, 0.000117 s, -0.000008 s, × 0.9360, 16 µs/rev
pypy x_revs_x00_added_x_copies
c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000321 s, 0.6f1f4a s, +0.000001 s, × 1.0031, 322 µs/rev
pypy x_revs_x000_added_x000_copies
df6f7a526b60 a83dc6a2d56f : 6 revs, 0.011948 s, 0.011856 s, -0.000092 s, × 0.9923, 1976 µs/rev
pypy x000_revs_xx00_added_0_copies
89a76aede314 2f22446ff07e : 4785 revs, 0.051267 s, 0.050992 s, -0.000275 s, × 0.9946, 10 µs/rev
pypy x000_revs_x000_added_x_copies
8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.087755 s, 0.087444 s, -0.000311 s, × 0.9965, 12 µs/rev
pypy x000_revs_x000_added_x000_copies
89a76aede314 7b3dda341c84 : 5441 revs, 0.061818 s, 0.062487 s, +0.000669 s, × 1.0108, 11 µs/rev
pypy x0000_revs_x_added_0_copies
d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.634253 s, 0.634909 s, +0.000656 s, × 1.0010, 14 µs/rev
pypy x0000_revs_xx000_added_0_copies
bf2c629d0071 4ffed77c095c : 2 revs, 0.013179 s, 0.013360 s, +0.000181 s, × 1.0137, 6680 µs/rev
pypy x0000_revs_xx000_added_x000_copies
08ea3258278e d9fa043f30c0 : 11316 revs, 0.119643 s, 0.120775 s, +0.001132 s, × 1.0095, 10 µs/rev
netbeans x_revs_x_added_0_copies
fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000085 s, +0.000000 s, × 1.0000, 42 µs/rev
netbeans x_revs_x000_added_0_copies
6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000108 s, +0.000001 s, × 1.0093, 54 µs/rev
netbeans x_revs_x_added_x_copies
1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000176 s, 0.000176 s, +0.000000 s, × 1.0000, 58 µs/rev
netbeans x_revs_x00_added_x_copies
35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000743 s, 0.000747 s, +0.000004 s, × 1.0054, 83 µs/rev
netbeans x000_revs_xx00_added_0_copies
eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010246 s, 0.010128 s, -0.000118 s, × 0.9885, 7 µs/rev
netbeans x000_revs_x000_added_x_copies
e2063d266acd 6081d72689dc : 1533 revs, 0.015853 s, 0.015899 s, +0.000046 s, × 1.0029, 10 µs/rev
netbeans x000_revs_x000_added_x000_copies
ff453e9fee32 411350406ec2 : 5750 revs, 0.062971 s, 0.062215 s, -0.000756 s, × 0.9880, 10 µs/rev
netbeans x0000_revs_xx000_added_x000_copies
588c2d1ced70 1aad62e59ddd : 66949 revs, 0.518337 s, 0.521004 s, +0.002667 s, × 1.0051, 7 µs/rev
mozilla-central x_revs_x_added_0_copies
3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000090 s, 0.000090 s, +0.000000 s, × 1.0000, 45 µs/rev
mozilla-central x_revs_x000_added_0_copies
dd390860c6c9 40d0c5bed75d : 8 revs, 0.000268 s, 0.000264 s, -0.000004 s, × 0.9851, 33 µs/rev
mozilla-central x_revs_x_added_x_copies
8d198483ae3b 14207ffc2b2f : 9 revs, 0.000187 s, 0.000186 s, -0.000001 s, × 0.9947, 20 µs/rev
mozilla-central x_revs_x00_added_x_copies
98cbc58cc6bc 446a150332c3 : 7 revs, 0.000661 s, 0.000660 s, -0.000001 s, × 0.9985, 94 µs/rev
mozilla-central x_revs_x000_added_x000_copies
3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003494 s, 0.003542 s, +0.000048 s, × 1.0137, 1180 µs/rev
mozilla-central x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.070509 s, 0.071574 s, +0.001065 s, × 1.0151, 11929 µs/rev
mozilla-central x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006489 s, 0.006498 s, +0.000009 s, × 1.0014, 4 µs/rev
mozilla-central x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005070 s, 0.005206 s, +0.000136 s, × 1.0268, 126 µs/rev
mozilla-central x000_revs_x000_added_x000_copies
7c97034feb78 4407bd0c6330 : 7839 revs, 0.065241 s, 0.065535 s, +0.000294 s, × 1.0045, 8 µs/rev
mozilla-central x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027284 s, 0.027139 s, -0.000145 s, × 0.9947, 44 µs/rev
mozilla-central x0000_revs_xx000_added_x000_copies
f78c615a656c 96a38b690156 : 30263 revs, 0.203671 s, 0.201924 s, -0.001747 s, × 0.9914, 6 µs/rev
mozilla-central x00000_revs_x0000_added_x0000_copies
6832ae71433c 4c222a1d9a00 : 153721 revs, 1.239373 s, 1.257201 s, +0.017828 s, × 1.0144, 8 µs/rev
mozilla-central x00000_revs_x00000_added_x000_copies
76caed42cf7c 1daa622bbe42 : 204976 revs, 1.649803 s, 1.663045 s, +0.013242 s, × 1.0080, 8 µs/rev
mozilla-try x_revs_x_added_0_copies
aaf6dde0deb8 9790f499805a : 2 revs, 0.000868 s, 0.000866 s, -0.000002 s, × 0.9977, 433 µs/rev
mozilla-try x_revs_x000_added_0_copies
d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000885 s, 0.000883 s, -0.000002 s, × 0.9977, 441 µs/rev
mozilla-try x_revs_x_added_x_copies
092fcca11bdb 936255a0384a : 4 revs, 0.000165 s, 0.000163 s, -0.000002 s, × 0.9879, 40 µs/rev
mozilla-try x_revs_x00_added_x_copies
b53d2fadbdb5 017afae788ec : 2 revs, 0.001147 s, 0.001139 s, -0.000008 s, × 0.9930, 569 µs/rev
mozilla-try x_revs_x000_added_x000_copies
20408ad61ce5 6f0ee96e21ad : 1 revs, 0.032885 s, 0.032753 s, -0.000132 s, × 0.9960, 32752 µs/rev
mozilla-try x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.071304 s, 0.073266 s, +0.001962 s, × 1.0275, 12211 µs/rev
mozilla-try x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006506 s, 0.006567 s, +0.000061 s, × 1.0094, 4 µs/rev
mozilla-try x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005486 s, 0.005427 s, -0.000059 s, × 0.9892, 132 µs/rev
mozilla-try x000_revs_x000_added_x000_copies
1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.064677 s, 0.064058 s, -0.000619 s, × 0.9904, 9 µs/rev
mozilla-try x0000_revs_x_added_0_copies
63519bfd42ee a36a2a865d92 : 40314 revs, 0.306000 s, 0.303320 s, -0.002680 s, × 0.9912, 7 µs/rev
mozilla-try x0000_revs_x_added_x_copies
9fe69ff0762d bcabf2a78927 : 38690 revs, 0.288217 s, 0.288456 s, +0.000239 s, × 1.0008, 7 µs/rev
mozilla-try x0000_revs_xx000_added_x_copies
156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.086117 s, 0.085925 s, -0.000192 s, × 0.9978, 9 µs/rev
mozilla-try x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027512 s, 0.027302 s, -0.000210 s, × 0.9924, 44 µs/rev
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.998239 s, 2.034596 s, +0.036357 s, × 1.0182, 20 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 0.688201 s, 0.694030 s, +0.005829 s, × 1.0085, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 4.389428 s, 4.407723 s, +0.018295 s, × 1.0042, 12 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 0.578736 s, 0.574355 s, -0.004381 s, × 0.9924, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 4.363599 s, 4.457827 s, +0.094228 s, × 1.0216, 12 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.324129 s, 4.351696 s, +0.027567 s, × 1.0064, 12 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.565727 s, 1.570065 s, +0.004338 s, × 1.0028, 8 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 86.722016 s, 80.828689 s, -5.893327 s, × 0.9320, 352 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 35.113727 s, 34.094064 s, -1.019663 s, × 0.9710, 89 µs/rev
private : 459513 revs, 27.397070 s, 27.435529 s, +0.038459 s, × 1.0014, 59 µs/rev
Differential Revision: https://phab.mercurial-scm.org/D9655
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 11:15:45 +0100] rev 46583
copies-rust: make more use of the new comparison property
We deal with the "both are the same" sooner and simplify the rest of the
conditional.
Differential Revision: https://phab.mercurial-scm.org/D9654
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 11:11:05 +0100] rev 46582
copies-rust: implement PartialEqual manually
Now that we know that each (dest, rev) pair has at most a unique CopySource, we
can simplify comparison a lot.
This "simple" step buy a good share of the previous slowdown back in some case:
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 43.304637 s, 34.443661 s, -8.860976 s, × 0.7954, 90 µs/rev
Full benchmark:
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mercurial x_revs_x_added_0_copies
ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000043 s, 0.000043 s, +0.000000 s, × 1.0000, 43 µs/rev
mercurial x_revs_x_added_x_copies
2b1c78674230 0c1d10351869 : 6 revs, 0.000114 s, 0.000117 s, +0.000003 s, × 1.0263, 19 µs/rev
mercurial x000_revs_x000_added_x_copies
81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004937 s, 0.004892 s, -0.000045 s, × 0.9909, 4 µs/rev
pypy x_revs_x_added_0_copies
aed021ee8ae8 099ed31b181b : 9 revs, 0.000339 s, 0.000196 s, -0.000143 s, × 0.5782, 21 µs/rev
pypy x_revs_x000_added_0_copies
4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000050 s, +0.000001 s, × 1.0204, 50 µs/rev
pypy x_revs_x_added_x_copies
ac52eb7bbbb0 72e022663155 : 7 revs, 0.000202 s, 0.000117 s, -0.000085 s, × 0.5792, 16 µs/rev
pypy x_revs_x00_added_x_copies
c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000409 s, 0.6f1f4a s, -0.000087 s, × 0.7873, 322 µs/rev
pypy x_revs_x000_added_x000_copies
df6f7a526b60 a83dc6a2d56f : 6 revs, 0.011984 s, 0.011949 s, -0.000035 s, × 0.9971, 1991 µs/rev
pypy x000_revs_xx00_added_0_copies
89a76aede314 2f22446ff07e : 4785 revs, 0.050820 s, 0.050802 s, -0.000018 s, × 0.9996, 10 µs/rev
pypy x000_revs_x000_added_x_copies
8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.087953 s, 0.088090 s, +0.000137 s, × 1.0016, 12 µs/rev
pypy x000_revs_x000_added_x000_copies
89a76aede314 7b3dda341c84 : 5441 revs, 0.062902 s, 0.062079 s, -0.000823 s, × 0.9869, 11 µs/rev
pypy x0000_revs_x_added_0_copies
d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.679234 s, 0.635337 s, -0.043897 s, × 0.9354, 14 µs/rev
pypy x0000_revs_xx000_added_0_copies
bf2c629d0071 4ffed77c095c : 2 revs, 0.013095 s, 0.013262 s, +0.000167 s, × 1.0128, 6631 µs/rev
pypy x0000_revs_xx000_added_x000_copies
08ea3258278e d9fa043f30c0 : 11316 revs, 0.120910 s, 0.120085 s, -0.000825 s, × 0.9932, 10 µs/rev
netbeans x_revs_x_added_0_copies
fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000087 s, 0.000085 s, -0.000002 s, × 0.9770, 42 µs/rev
netbeans x_revs_x000_added_0_copies
6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000110 s, +0.000003 s, × 1.0280, 55 µs/rev
netbeans x_revs_x_added_x_copies
1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000186 s, 0.000177 s, -0.000009 s, × 0.9516, 59 µs/rev
netbeans x_revs_x00_added_x_copies
35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000754 s, 0.000743 s, -0.000011 s, × 0.9854, 82 µs/rev
netbeans x000_revs_xx00_added_0_copies
eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010443 s, 0.010168 s, -0.000275 s, × 0.9737, 7 µs/rev
netbeans x000_revs_x000_added_x_copies
e2063d266acd 6081d72689dc : 1533 revs, 0.015697 s, 0.015946 s, +0.000249 s, × 1.0159, 10 µs/rev
netbeans x000_revs_x000_added_x000_copies
ff453e9fee32 411350406ec2 : 5750 revs, 0.063528 s, 0.062712 s, -0.000816 s, × 0.9872, 10 µs/rev
netbeans x0000_revs_xx000_added_x000_copies
588c2d1ced70 1aad62e59ddd : 66949 revs, 0.545515 s, 0.523832 s, -0.021683 s, × 0.9603, 7 µs/rev
mozilla-central x_revs_x_added_0_copies
3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000089 s, 0.000090 s, +0.000001 s, × 1.0112, 45 µs/rev
mozilla-central x_revs_x000_added_0_copies
dd390860c6c9 40d0c5bed75d : 8 revs, 0.000265 s, 0.000264 s, -0.000001 s, × 0.9962, 33 µs/rev
mozilla-central x_revs_x_added_x_copies
8d198483ae3b 14207ffc2b2f : 9 revs, 0.000381 s, 0.000187 s, -0.000194 s, × 0.4908, 20 µs/rev
mozilla-central x_revs_x00_added_x_copies
98cbc58cc6bc 446a150332c3 : 7 revs, 0.000672 s, 0.000665 s, -0.000007 s, × 0.9896, 95 µs/rev
mozilla-central x_revs_x000_added_x000_copies
3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003497 s, 0.003556 s, +0.000059 s, × 1.0169, 1185 µs/rev
mozilla-central x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.073204 s, 0.071345 s, -0.001859 s, × 0.9746, 11890 µs/rev
mozilla-central x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006482 s, 0.006551 s, +0.000069 s, × 1.0106, 4 µs/rev
mozilla-central x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005066 s, 0.005078 s, +0.000012 s, × 1.0024, 123 µs/rev
mozilla-central x000_revs_x000_added_x000_copies
7c97034feb78 4407bd0c6330 : 7839 revs, 0.065707 s, 0.065823 s, +0.000116 s, × 1.0018, 8 µs/rev
mozilla-central x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.026800 s, 0.027050 s, +0.000250 s, × 1.0093, 43 µs/rev
mozilla-central x0000_revs_xx000_added_x000_copies
f78c615a656c 96a38b690156 : 30263 revs, 0.203856 s, 0.202443 s, -0.001413 s, × 0.9931, 6 µs/rev
mozilla-central x00000_revs_x0000_added_x0000_copies
6832ae71433c 4c222a1d9a00 : 153721 revs, 1.293394 s, 1.261583 s, -0.031811 s, × 0.9754, 8 µs/rev
mozilla-central x00000_revs_x00000_added_x000_copies
76caed42cf7c 1daa622bbe42 : 204976 revs, 1.698239 s, 1.643869 s, -0.054370 s, × 0.9680, 8 µs/rev
mozilla-try x_revs_x_added_0_copies
aaf6dde0deb8 9790f499805a : 2 revs, 0.000875 s, 0.000868 s, -0.000007 s, × 0.9920, 434 µs/rev
mozilla-try x_revs_x000_added_0_copies
d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000891 s, 0.000887 s, -0.000004 s, × 0.9955, 443 µs/rev
mozilla-try x_revs_x_added_x_copies
092fcca11bdb 936255a0384a : 4 revs, 0.000292 s, 0.000168 s, -0.000124 s, × 0.5753, 42 µs/rev
mozilla-try x_revs_x00_added_x_copies
b53d2fadbdb5 017afae788ec : 2 revs, 0.003939 s, 0.001160 s, -0.002779 s, × 0.2945, 580 µs/rev
mozilla-try x_revs_x000_added_x000_copies
20408ad61ce5 6f0ee96e21ad : 1 revs, 0.033027 s, 0.033016 s, -0.000011 s, × 0.9997, 33016 µs/rev
mozilla-try x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.073703 s, 0.073312 s, -0.39ae31 s, × 0.9947, 12218 µs/rev
mozilla-try x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006469 s, 0.006485 s, +0.000016 s, × 1.0025, 4 µs/rev
mozilla-try x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005278 s, 0.005494 s, +0.000216 s, × 1.0409, 134 µs/rev
mozilla-try x000_revs_x000_added_x000_copies
1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.064995 s, 0.064879 s, -0.000116 s, × 0.9982, 9 µs/rev
mozilla-try x0000_revs_x_added_0_copies
63519bfd42ee a36a2a865d92 : 40314 revs, 0.301041 s, 0.301469 s, +0.000428 s, × 1.0014, 7 µs/rev
mozilla-try x0000_revs_x_added_x_copies
9fe69ff0762d bcabf2a78927 : 38690 revs, 0.285575 s, 0.297113 s, +0.011538 s, × 1.0404, 7 µs/rev
mozilla-try x0000_revs_xx000_added_x_copies
156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.085597 s, 0.085890 s, +0.000293 s, × 1.0034, 9 µs/rev
mozilla-try x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027118 s, 0.027718 s, +0.000600 s, × 1.0221, 45 µs/rev
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 2.119204 s, 2.048949 s, -0.070255 s, × 0.9668, 21 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 0.701479 s, 0.685924 s, -0.015555 s, × 0.9778, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 4.482399 s, 4.482891 s, +0.000492 s, × 1.0001, 12 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 0.574082 s, 0.577633 s, +0.003551 s, × 1.0062, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 4.480366 s, 4.397816 s, -0.082550 s, × 0.9816, 12 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.369070 s, 4.370538 s, +0.001468 s, × 1.0003, 12 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.592506 s, 1.570439 s, -0.022067 s, × 0.9861, 8 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 87.824489 s, 88.388512 s, +0.564023 s, × 1.0064, 386 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 43.304637 s, 34.443661 s, -8.860976 s, × 0.7954, 90 µs/rev
private : 459513 revs, 33.853687 s, 27.370148 s, -6.483539 s, × 0.8085, 59 µs/rev
Differential Revision: https://phab.mercurial-scm.org/D9653
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 11:06:58 +0100] rev 46581
copies-rust: record "overwritten" information from both side on delete
With this change, we can ensure every (`dest`, `rev`) points to the same value,
making a lots of comparison simpler.
Differential Revision: https://phab.mercurial-scm.org/D9652
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 10:59:00 +0100] rev 46580
copies-rust: refactor the "deletion" case
We rearrange the code to single out the case where information need to be
overwritten on both side of the merge. This open the way to better dealing with
this case.
Differential Revision: https://phab.mercurial-scm.org/D9651
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 10:46:08 +0100] rev 46579
copies-rust: process copy information of both parent at the same time
This avoid a double iteration and this open the way to a better handing of
deletion. That better handling of deletion is the core reason we are doing this
refactoring.
Differential Revision: https://phab.mercurial-scm.org/D9650
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 10:24:16 +0100] rev 46578
copies-rust: yield both p1 and p2 copies in `ChangedFiles.actions()`
Instead of filtering the relevant parent inside de ChangedFiles method, we now
yield all copies information and let the caller do the filtering. Soon, the
filtering will be replaced by dispatching.
Differential Revision: https://phab.mercurial-scm.org/D9649
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 10:01:34 +0100] rev 46577
copies-rust: extract the processing of a single copy information
This will make it easy to process copy from both p1 and p2 in the same
`add_from_changes` call.
Differential Revision: https://phab.mercurial-scm.org/D9648
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 09:42:04 +0100] rev 46576
copies-rust: use matching to select the final copies information
This is a bit more idiomatic and this prepare a future refactoring where
InternalCopies from both parent would be updated at the same time.
Differential Revision: https://phab.mercurial-scm.org/D9647
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 09:30:25 +0100] rev 46575
copies-rust: get the parents' copies earlier
This remove some conditional nesting and prepare for future work were we will
unify the handling of copies from p1 and p2.
Differential Revision: https://phab.mercurial-scm.org/D9646
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 09 Mar 2021 11:19:11 +0530] rev 46574
Added signature for changeset
d5d9177c0045
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 09 Mar 2021 11:19:01 +0530] rev 46573
Added tag 5.7.1 for changeset
d5d9177c0045
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Mar 2021 16:55:39 -0500] rev 46572
localrepo: fix conversion of exceptions to strings flagged by pytype
This is the same as
e571fec5b606. I assume the 3 similar uses of `bytestr` in
`__getitem__()` are OK (even though pytype also flags them), because there is
apparently test coverage for 2 of the 3 cases.
Differential Revision: https://phab.mercurial-scm.org/D10131
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Mar 2021 16:54:33 -0500] rev 46571
localrepo: fix a UI string to be bytes
Flagged by pytype.
Differential Revision: https://phab.mercurial-scm.org/D10130
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Mar 2021 12:28:53 -0500] rev 46570
pycompat: fix a bytes vs str issue in `unnamedtempfile()`
This seems trivially correct, though the only two uses I found both took this
path. So I'm guessing we're missing test coverage.
Differential Revision: https://phab.mercurial-scm.org/D10129
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Dec 2020 18:22:57 +0100] rev 46569
copies-rust: remove the ancestor Oracle logic
We are not doing any `is_ancestor` call anymore. So we can drop that logic and
associated arguments.
Differential Revision: https://phab.mercurial-scm.org/D9645
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Dec 2020 18:04:23 +0100] rev 46568
copies-rust: track "overwrites" directly within CopySource
Overwrite are "rare enough" that explicitly keeping track of them is going to be
"cheap", or at least much cheaper that issuing many `is_ancestor` calls.
Even a simple implementation using no specific optimisation (eg: using the
generic HashSet type) yield good result in most cases.
They are interesting optimization to can do on top of that. We will implement
them in later changesets.
We tried different approach to speed up the overwrite detection and this one
seems the most promising. Without further optimization, we already see sizable
speedup on various cases.
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.482399 s, -0.655770 s, × 0.8724, 12 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 4.480366 s, -0.647443 s, × 0.8737, 12 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 4.369070 s, -0.602066 s, × 0.8789, 12 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.592506 s, -0.149172 s, × 0.9144, 8 µs/rev
However, some of the case doing a lot of overwrite get significantly slower.
The one with a really problematic slowdown are the special "head reducing" merge
in mozilla-try so I am not too worried about them. In addition, further
changeset are going to improve the performance of all this.
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.343373 s, 2.119204 s, +0.775831 s, × 1.5775, 21 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 87.824489 s, +47.509667 s, × 2.1785, 383 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 20.048029 s, 43.304637 s, +23.256608 s, × 2.1600, 113 µs/rev
Full benchmark below:
Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev
---------------------------------------------------------------------------------------------------------------------------------------------------------------
mercurial x_revs_x_added_0_copies
ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000042 s, 0.000043 s, +0.000001 s, × 1.0238, 43 µs/rev
mercurial x_revs_x_added_x_copies
2b1c78674230 0c1d10351869 : 6 revs, 0.000110 s, 0.000114 s, +0.000004 s, × 1.0364, 19 µs/rev
mercurial x000_revs_x000_added_x_copies
81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004945 s, 0.004937 s, -0.000008 s, × 0.9984, 4 µs/rev
pypy x_revs_x_added_0_copies
aed021ee8ae8 099ed31b181b : 9 revs, 0.000192 s, 0.000339 s, +0.000147 s, × 1.7656, 37 µs/rev
pypy x_revs_x000_added_0_copies
4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000049 s, +0.000000 s, × 1.0000, 49 µs/rev
pypy x_revs_x_added_x_copies
ac52eb7bbbb0 72e022663155 : 7 revs, 0.000112 s, 0.000202 s, +0.000090 s, × 1.8036, 28 µs/rev
pypy x_revs_x00_added_x_copies
c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000323 s, 0.000409 s, +0.000086 s, × 1.2663, 409 µs/rev
pypy x_revs_x000_added_x000_copies
df6f7a526b60 a83dc6a2d56f : 6 revs, 0.010042 s, 0.011984 s, +0.001942 s, × 1.1934, 1997 µs/rev
pypy x000_revs_xx00_added_0_copies
89a76aede314 2f22446ff07e : 4785 revs, 0.049813 s, 0.050820 s, +0.001007 s, × 1.0202, 10 µs/rev
pypy x000_revs_x000_added_x_copies
8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.079937 s, 0.087953 s, +0.008016 s, × 1.1003, 12 µs/rev
pypy x000_revs_x000_added_x000_copies
89a76aede314 7b3dda341c84 : 5441 revs, 0.059412 s, 0.062902 s, +0.003490 s, × 1.0587, 11 µs/rev
pypy x0000_revs_x_added_0_copies
d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.533769 s, 0.679234 s, +0.145465 s, × 1.2725, 15 µs/rev
pypy x0000_revs_xx000_added_0_copies
bf2c629d0071 4ffed77c095c : 2 revs, 0.013147 s, 0.013095 s, -0.000052 s, × 0.9960, 6547 µs/rev
pypy x0000_revs_xx000_added_x000_copies
08ea3258278e d9fa043f30c0 : 11316 revs, 0.110680 s, 0.120910 s, +0.010230 s, × 1.0924, 10 µs/rev
netbeans x_revs_x_added_0_copies
fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000087 s, +0.000002 s, × 1.0235, 43 µs/rev
netbeans x_revs_x000_added_0_copies
6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000107 s, +0.000000 s, × 1.0000, 53 µs/rev
netbeans x_revs_x_added_x_copies
1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000175 s, 0.000186 s, +0.000011 s, × 1.0629, 62 µs/rev
netbeans x_revs_x00_added_x_copies
35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000720 s, 0.000754 s, +0.000034 s, × 1.0472, 83 µs/rev
netbeans x000_revs_xx00_added_0_copies
eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010019 s, 0.010443 s, +0.000424 s, × 1.0423, 7 µs/rev
netbeans x000_revs_x000_added_x_copies
e2063d266acd 6081d72689dc : 1533 revs, 0.015602 s, 0.015697 s, +0.000095 s, × 1.0061, 10 µs/rev
netbeans x000_revs_x000_added_x000_copies
ff453e9fee32 411350406ec2 : 5750 revs, 0.058759 s, 0.063528 s, +0.004769 s, × 1.0812, 11 µs/rev
netbeans x0000_revs_xx000_added_x000_copies
588c2d1ced70 1aad62e59ddd : 66949 revs, 0.491550 s, 0.545515 s, +0.053965 s, × 1.1098, 8 µs/rev
mozilla-central x_revs_x_added_0_copies
3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000087 s, 0.000089 s, +0.000002 s, × 1.0230, 44 µs/rev
mozilla-central x_revs_x000_added_0_copies
dd390860c6c9 40d0c5bed75d : 8 revs, 0.000268 s, 0.000265 s, -0.000003 s, × 0.9888, 33 µs/rev
mozilla-central x_revs_x_added_x_copies
8d198483ae3b 14207ffc2b2f : 9 revs, 0.000181 s, 0.000381 s, +0.000200 s, × 2.1050, 42 µs/rev
mozilla-central x_revs_x00_added_x_copies
98cbc58cc6bc 446a150332c3 : 7 revs, 0.000661 s, 0.000672 s, +0.000011 s, × 1.0166, 96 µs/rev
mozilla-central x_revs_x000_added_x000_copies
3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003256 s, 0.003497 s, +0.000241 s, × 1.0740, 1165 µs/rev
mozilla-central x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.066749 s, 0.073204 s, +0.006455 s, × 1.0967, 12200 µs/rev
mozilla-central x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006462 s, 0.006482 s, +0.000020 s, × 1.0031, 4 µs/rev
mozilla-central x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.004919 s, 0.005066 s, +0.000147 s, × 1.0299, 123 µs/rev
mozilla-central x000_revs_x000_added_x000_copies
7c97034feb78 4407bd0c6330 : 7839 revs, 0.062421 s, 0.065707 s, +0.003286 s, × 1.0526, 8 µs/rev
mozilla-central x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.026633 s, 0.026800 s, +0.000167 s, × 1.0063, 43 µs/rev
mozilla-central x0000_revs_xx000_added_x000_copies
f78c615a656c 96a38b690156 : 30263 revs, 0.197792 s, 0.203856 s, +0.006064 s, × 1.0307, 6 µs/rev
mozilla-central x00000_revs_x0000_added_x0000_copies
6832ae71433c 4c222a1d9a00 : 153721 revs, 1.259970 s, 1.293394 s, +0.033424 s, × 1.0265, 8 µs/rev
mozilla-central x00000_revs_x00000_added_x000_copies
76caed42cf7c 1daa622bbe42 : 204976 revs, 1.689184 s, 1.698239 s, +0.009055 s, × 1.0054, 8 µs/rev
mozilla-try x_revs_x_added_0_copies
aaf6dde0deb8 9790f499805a : 2 revs, 0.000865 s, 0.000875 s, +0.000010 s, × 1.0116, 437 µs/rev
mozilla-try x_revs_x000_added_0_copies
d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000893 s, 0.000891 s, -0.000002 s, × 0.9978, 445 µs/rev
mozilla-try x_revs_x_added_x_copies
092fcca11bdb 936255a0384a : 4 revs, 0.000172 s, 0.000292 s, +0.000120 s, × 1.6977, 73 µs/rev
mozilla-try x_revs_x00_added_x_copies
b53d2fadbdb5 017afae788ec : 2 revs, 0.001159 s, 0.003939 s, +0.002780 s, × 3.3986, 1969 µs/rev
mozilla-try x_revs_x000_added_x000_copies
20408ad61ce5 6f0ee96e21ad : 1 revs, 0.031621 s, 0.033027 s, +0.001406 s, × 1.0445, 33027 µs/rev
mozilla-try x_revs_x0000_added_x0000_copies
effb563bb7e5 c07a39dc4e80 : 6 revs, 0.068571 s, 0.073703 s, +0.005132 s, × 1.0748, 12283 µs/rev
mozilla-try x000_revs_xx00_added_0_copies
6100d773079a 04a55431795e : 1593 revs, 0.006452 s, 0.006469 s, +0.000017 s, × 1.0026, 4 µs/rev
mozilla-try x000_revs_x000_added_x_copies
9f17a6fc04f9 2d37b966abed : 41 revs, 0.005443 s, 0.005278 s, -0.000165 s, × 0.9697, 128 µs/rev
mozilla-try x000_revs_x000_added_x000_copies
1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.063180 s, 0.064995 s, +0.001815 s, × 1.0287, 9 µs/rev
mozilla-try x0000_revs_x_added_0_copies
63519bfd42ee a36a2a865d92 : 40314 revs, 0.293564 s, 0.301041 s, +0.007477 s, × 1.0255, 7 µs/rev
mozilla-try x0000_revs_x_added_x_copies
9fe69ff0762d bcabf2a78927 : 38690 revs, 0.286595 s, 0.285575 s, -0.001020 s, × 0.9964, 7 µs/rev
mozilla-try x0000_revs_xx000_added_x_copies
156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.083256 s, 0.085597 s, +0.002341 s, × 1.0281, 9 µs/rev
mozilla-try x0000_revs_xx000_added_0_copies
9eec5917337d 67118cc6dcad : 615 revs, 0.027282 s, 0.027118 s, -0.000164 s, × 0.9940, 44 µs/rev
mozilla-try x0000_revs_xx000_added_x000_copies
89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.343373 s, 2.119204 s, +0.775831 s, × 1.5775, 21 µs/rev
mozilla-try x0000_revs_x0000_added_x0000_copies
e928c65095ed e951f4ad123a : 52031 revs, 0.665737 s, 0.701479 s, +0.035742 s, × 1.0537, 13 µs/rev
mozilla-try x00000_revs_x_added_0_copies
6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.482399 s, -0.655770 s, × 0.8724, 12 µs/rev
mozilla-try x00000_revs_x00000_added_0_copies
dc8a3ca7010e d16fde900c9c : 34414 revs, 0.573276 s, 0.574082 s, +0.000806 s, × 1.0014, 16 µs/rev
mozilla-try x00000_revs_x_added_x_copies
5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 4.480366 s, -0.647443 s, × 0.8737, 12 µs/rev
mozilla-try x00000_revs_x000_added_x_copies
9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 4.369070 s, -0.602066 s, × 0.8789, 12 µs/rev
mozilla-try x00000_revs_x0000_added_x0000_copies
8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.592506 s, -0.149172 s, × 0.9144, 8 µs/rev
mozilla-try x00000_revs_x00000_added_x0000_copies
1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 87.824489 s, +47.509667 s, × 2.1785, 383 µs/rev
mozilla-try x00000_revs_x00000_added_x000_copies
9b2a99adc05e 8e29777b48e6 : 382065 revs, 20.048029 s, 43.304637 s, +23.256608 s, × 2.1600, 113 µs/rev
private : 459513 revs, 37.179470 s, 33.853687 s, -3.325783 s, × 0.9105, 73 µs/rev
Differential Revision: https://phab.mercurial-scm.org/D9644
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 23 Dec 2020 03:04:43 +0100] rev 46567
copies-rust: add methods to build and update CopySource
Having explicit method with clear semantic help to clarify the code and prepare
an update to the underlying documentation without too much disruption.
Differential Revision: https://phab.mercurial-scm.org/D9643
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 23 Dec 2020 03:04:33 +0100] rev 46566
copies-rust: fix reverted argument when merging tiny minor or major
The argument where not passed in the right other. This is not caught by the test
(yet) because it is a sub case of a special case. Am I adding this to my list of
things to test. Using test directly in Rust would be appropriate here. However
we don't have the ability to test this code that way yet, and I am focussing on
other part of that work right now.
Differential Revision: https://phab.mercurial-scm.org/D9657
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 08:42:30 +0100] rev 46565
copies-rust: rename TimeStampedPathCopy to CopySource
Same rational as the previous changesets. CopySource is a clear descriptive name
that does not depends on an implementation details that we are about to the
change.
Differential Revision: https://phab.mercurial-scm.org/D9642
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Dec 2020 17:26:00 +0100] rev 46564
copies-rust: rename TimeStampedPathCopies to InternalPathCopies
We are looking into moving away from TimeStampedPathCopy (that use is_ancestors
call to detect overwrite) in favor of an approach that does not requires
is_ancestors calls. Yet we will still need an internal representation that
differs from the returned result.
So we call it "InternalPathCopies" which is generic but clear.
Differential Revision: https://phab.mercurial-scm.org/D9641
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 12 Dec 2020 19:35:08 +0100] rev 46563
copies: detect case when a merge decision overwrite previous data
We now detect and record when a merge case required special logic (eg: thing
that append during the merge, ambiguity leading to picking p1 data, etc) and we
explicitly mark the result as superseding the previous data.
This fixes the family of test we previously added.
Differential Revision: https://phab.mercurial-scm.org/D9613
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Dec 2020 19:26:33 +0100] rev 46562
copies: rearrange all value comparison conditional
To properly handle the newly tested case (chaining of merges) we will need to
detect more accurately when an actualy merging of the copy information (and
superseed the two existing data). Before starting to do so, we need to
reorganise the values comparison to introduce different conditional branches
when such actual merging is needed/detected.
To avoid mixing too many change in this complicated code, we do the
reorganisation before adding the "overwrite detection" logic in the next
changesets.
Differential Revision: https://phab.mercurial-scm.org/D9612
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 12:21:00 +0100] rev 46561
test-copies: introduce merge chains test for the P/Q merges
This is similar to the chaining test we have for the A/E merges.
The current result of this tests is wrong, as for the other test of the same
familly. This will be fixed by a later changesets.
Differential Revision: https://phab.mercurial-scm.org/D10059
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 11:56:58 +0100] rev 46560
test-copies: add a case involving the `b` and a new `r` branch
That case involve a branch overwriting copies information from the other one.
It is similar to the `mBFm` / `mFBm` case except this case actual content merge
is involved too.
Differential Revision: https://phab.mercurial-scm.org/D10058
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 20:46:33 +0100] rev 46559
test-copies: introduce case combining the `p` and `q` branch
That case involves conflicting copies information from each branch. It is
similar to the `mAEm` / `mEAm` case except this case actual content merge is
involved too.
Differential Revision: https://phab.mercurial-scm.org/D10057
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 20:47:15 +0100] rev 46558
test-copies: add a `q` branch similar to the `e` but on the new files
This branch will be used to create merge case that mirror ones involving the `e` branch.
Differential Revision: https://phab.mercurial-scm.org/D10056
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 20:47:07 +0100] rev 46557
test-copies: add a `p` branch similar to the `a` but on the new files
This branch will be used to create merge case that mirror ones involving the `a` branch.
Differential Revision: https://phab.mercurial-scm.org/D10055
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 18:57:09 +0100] rev 46556
test-copies: move the new files in the `i` branch
The initial branch is moving some of the "same content" file around. We do the
same for the "different content" before start to implement more tests.
The new files have harmless impact of various existing tests.
Differential Revision: https://phab.mercurial-scm.org/D10054
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 17:06:12 +0100] rev 46555
test-copies: add 3 new files with their own content
The new `p`, `q` and `r` file mirror the `a`, `b` and `h` but with different
content for each files. This will be used to create "mirror" test case that
involve actual merge happening.
For now, we only add the file to keep patches small and easier to review.
Differential Revision: https://phab.mercurial-scm.org/D10053
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 16:37:55 +0100] rev 46554
test-copies: introduce merge chaing test for the A/E + change tests
This is similar to the chaining test we have for the A/E merges (without change).
The current result of this tests is wrong, as for they "without change counter
part". This will be fixed by a later changesets.
Differential Revision: https://phab.mercurial-scm.org/D10052
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 19:39:33 +0100] rev 46553
test-copies: add a "change during merge" variant to the A+E test
Checks inline comment for details.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 22:56:46 +0100] rev 46552
test-copies: filter out the linkrev part of `debugindex`
It is not really useful for the tests and is a large source of churn when adding
more revisions to the tests.
Differential Revision: https://phab.mercurial-scm.org/D10050
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 22:27:25 +0100] rev 46551
test-copies: use "case-id" instead of revision number when listing sidedata
The revision number are not very informative and can change when new changeset
are added, creating unnecessary churn. We change the template before adding more
test to improve clarify of the over changesets.
Differential Revision: https://phab.mercurial-scm.org/D10049
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 26 Feb 2021 15:34:22 +0530] rev 46550
patch: fix a formatting issue
Differential Revision: https://phab.mercurial-scm.org/D10079
Yuya Nishihara <yuya@tcha.org> [Tue, 02 Feb 2021 20:20:17 +0900] rev 46549
log: fix handling of root (or empty) path provided by matcher (
issue6478)
Since
27d6956d386b "match: use '' instead of '.' for root directory",
'.' should be translated to ''. We can't blame repo.file() about this because
an empty string is invalid as a file path, but I found at least two callers
(_makematcher() and revset.filelog()) would crash because of this path[0].
So let's make repo.file() accept an empty string. path[0] == b'/' wouldn't
work on Python 3 anyways.
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 25 Feb 2021 15:18:00 +0530] rev 46548
tests: accept output changes by
33350debb480
Differential Revision: https://phab.mercurial-scm.org/D10067
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Feb 2021 21:08:45 +0100] rev 46547
test-copies: remove revision number from log
Differential Revision: https://phab.mercurial-scm.org/D10048
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Dec 2020 17:56:56 +0100] rev 46546
test-copies: add test chaining multiple merge
Right now, the copy tracing logic take the right decision for merges, but it
does not keep track of the right information about these decision and can fall
into later traps. We start with highlighting this possibility by adding new
tests, and we will fix them later.
Check the inline test documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D9611
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Dec 2020 17:56:30 +0100] rev 46545
test-copies: add test chaining multiple merges
Right now, the copy tracing logic take the right decision for merges, but it
does not keep track of the right information about these decision and can fall
into later traps. We start with highlighting this possibility by adding new
tests, and we will fix them later.
Check the inline test documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D9610
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 15:43:54 +0100] rev 46544
test-copies: add test chaining multiple merges
Right now, the copy tracing logic take the right decision for merges, but it
does not keep track of the right information about these decision and can fall
into later traps. We start with highlighting this possibility by adding new
tests, and we will fix them later.
Check the inline test documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D9609
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Feb 2021 13:49:55 +0100] rev 46543
test-copies: add subcase titles for various "conflicting" information variant
This make the transitions between case clearer.
Differential Revision: https://phab.mercurial-scm.org/D10047
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Feb 2021 12:45:16 +0100] rev 46542
test-copies: improve description of the B+F case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10046
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 06:02:09 +0100] rev 46541
test-copies: improve description of the C+H case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10045
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:58:22 +0100] rev 46540
test-copies: improve description of the B+C "revert/restore" case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10044
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:54:55 +0100] rev 46539
test-copies: improve description of the G+C case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10043
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:46:32 +0100] rev 46538
test-copies: improve description of the G+F case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10042
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:39:22 +0100] rev 46537
test-copies: improve description of the D+G case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10041
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:35:18 +0100] rev 46536
test-copies: improve description of the A+E case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10040
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:32:20 +0100] rev 46535
test-copies: improve description of the B+D case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10039
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:29:04 +0100] rev 46534
test-copies: improve description of the B+C case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10038
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:26:46 +0100] rev 46533
test-copies: improve description of the A+B case
This will make its role clearer.
Differential Revision: https://phab.mercurial-scm.org/D10037
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:19:23 +0100] rev 46532
test-copies: use intermediate variable some commit descriptions
Right now, everything mostly says "simple merge", we want to use something a bit
more descriptive. Before doing any changes, we do most of the churn. This helps
the next sets of changesets to be clearer.
Differential Revision: https://phab.mercurial-scm.org/D10036
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 18:48:45 +0100] rev 46531
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 17:52:04 +0100] rev 46530
narrow: fix flaky behavior described in
issue6150
This has been plaguing the CI for a good while, and it doesn't appear to have
an easy fix proposed yet. The solution in this change is to always do an
unambiguous (but expensive) lookup in case of comparison. This should always
be correct, albeit suboptimal.
Differential Revision: https://phab.mercurial-scm.org/D10034
Sushil khanchi <sushilkhanchi97@gmail.com> [Tue, 16 Feb 2021 15:44:51 +0530] rev 46529
patch: make diff --git to differentiate b/w file is empty or doesn't exists
Before this patch, as we didn't differentiate the two cases of a file in a context:
1. File doesn't exists
2. File is empty
which causes the blob id to be same for both the cases.
Now we use `nullhex` for a file which doesn't exists in a context (aligning it with
the git diff format)
Changes in test file reflect the fixed behavior.
Differential Revision: https://phab.mercurial-scm.org/D10001
Sushil khanchi <sushilkhanchi97@gmail.com> [Tue, 16 Feb 2021 15:37:19 +0530] rev 46528
tests: add a test to demonstrate a bug in `hg diff --git` (
issue6486)
Issue url: https://bz.mercurial-scm.org/show_bug.cgi?id=6486
This will be fixed in next patch.
Differential Revision: https://phab.mercurial-scm.org/D10000
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 10 Dec 2020 14:25:36 +0100] rev 46527
test-copies: reinstall initial identical (empty) files for chained copied
This effectively back out changeset
deeb215be337. Changeset
deeb215be33 does not
really include a justification for its change and make mes uncomfortable. I have
been thinking about it and they are two options:
- either having empty/full files does not make a difference, and
deeb215be337 is
a gratuitous changes.
- either having empty/full files do make a difference and
deeb215be33 silently
change the test coverage. In such situation if we want the "not empty" case to
be tested, we should add new cases to cover them
In practice, we know that the "file content did not change, but merge still need
to create a new filenode" case exists (for example if merging result in similar
content but both parent of the file need to be recorded), and that such case are
easy to miss/mess-up in the tests. Having all the file using the same (empty)
content was done on purpose to increase the coverage of such corner case.
As a result I am reinstalling the previous test situation. To
increase the coverage of some case involving content-merge in
test-copies-chain-merge.t, we will add a new, dedicated, cases later in this
series, once various cleanup and test improvement have been set in place.
This changeset starts with reinstalling the previous situation as (1) it is more
fragile, so I am more confided getting it back in the initial situation, (2) I
have specific test further down the line that are base on these one.
The next changeset will slightly alter the test to use non-empty files for these
tests (with identical content). It should help to make the initial intent "merge file with identical
content" clearer. I am still using a two steps (backout, then change content)
approach to facilitate careful validation of the output change.
Doing so has a large impact on the output of the "copy info in changeset extra" variant
added in
5e72827dae1e (2 changesets after
deeb215be33). It seems to highlight
various breakage when merge without content change are involved, this is a good
example of why we want to explicitly test theses cases. Because the different
-do- matters a lot.
Fixing the "copy info in changeset extra" is not a priority here. Because (1)
this changeset does not break anything, it only highlight that they were always
broken. (2) the only people using "copy info in changeset extra" do not have
merge.
Differential Revision: https://phab.mercurial-scm.org/D9587
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Feb 2021 17:08:34 +0530] rev 46526
upgrade: speed up when we have only nodemap to downgrade
Similar to what we do on upgrade, if we have only persistent-nodemap to
downgrade we will just delete the nodemap files and update repository
requirements instead of processing all the revlogs.
After downgrade, we are left with unrequired docket and transaction files which
seems fine but can work on deleting them if someone feels we should.
Differential Revision: https://phab.mercurial-scm.org/D9992
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 15 Feb 2021 15:13:20 +0530] rev 46525
upgrade: write nodemap for manifests too
In
98e39f04d60e I assumed that writing nodemap for manifests was not desirable
and stopped writing it during upgrade. However in recent discussion with
Pierre-Yves, I learnt that that's not true.
Differential Revision: https://phab.mercurial-scm.org/D9991
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 12:29:41 -0800] rev 46524
windows: fix parsing of version number to match format from D9955
Differential Revision: https://phab.mercurial-scm.org/D10061
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 12:26:52 -0800] rev 46523
build: make version from .hg_archival.txt consistent with that from .hg/
D9955 changed the version format to replace "-" by "." and to add "hg"
before the number representing the distance from the latest
tag. However, it missed the "hg" string and added an extra "." to the
version string we produce when there's a `.hg_archival.txt`. This
patch makes it consistent.
Differential Revision: https://phab.mercurial-scm.org/D10060
Matt Harbison <matt_harbison@yahoo.com> [Fri, 19 Feb 2021 10:04:53 -0500] rev 46522
helptext: fix a recent typo
Differential Revision: https://phab.mercurial-scm.org/D10033
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Feb 2021 15:16:22 +0100] rev 46521
re2: byteify some regex used to get check re2 availability
Changeset
687b865b95ad failed to properly byteify this because it was a raw
string. This went undetected so far because re2 does not seems to be widely
tested.
Differential Revision: https://phab.mercurial-scm.org/D10064