Thu, 25 Mar 2021 18:02:08 +0100 contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net> [Thu, 25 Mar 2021 18:02:08 +0100] rev 46819
contributor: change mentions of mpm to olivia Matt Mackall is now Olivia Mackall. I reached out to her about changing the copyright notices to reflect this change and she gave me the green light, so I changed everything relevant. Differential Revision: https://phab.mercurial-scm.org/D10266
Mon, 22 Mar 2021 15:29:05 -0700 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com> [Mon, 22 Mar 2021 15:29:05 -0700] rev 46818
fuzz: use Python 3 in makefile As in the previous patch, I copied the snippet defining `PYTHON` from the root Makefile. Differential Revision: https://phab.mercurial-scm.org/D10252
Mon, 22 Mar 2021 13:21:12 -0700 makefile: use Python 3 by default when building docs as well
Martin von Zweigbergk <martinvonz@google.com> [Mon, 22 Mar 2021 13:21:12 -0700] rev 46817
makefile: use Python 3 by default when building docs as well I copied the snippet defining `PYTHON` from the root Makefile. Differential Revision: https://phab.mercurial-scm.org/D10251
Mon, 22 Mar 2021 13:14:11 -0700 tests: replace some `python` by `"$PYTHON"` to not only use Python 2
Martin von Zweigbergk <martinvonz@google.com> [Mon, 22 Mar 2021 13:14:11 -0700] rev 46816
tests: replace some `python` by `"$PYTHON"` to not only use Python 2 I deleted my `python` binary as a test and a few tests started failing. Differential Revision: https://phab.mercurial-scm.org/D10250
Sat, 13 Mar 2021 03:17:00 +0100 copies: distinguish between merged and touched files during upgrade
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 13 Mar 2021 03:17:00 +0100] rev 46815
copies: distinguish between merged and touched files during upgrade This a filenode being different between p1, p2 and result does not necessarily means a merges happens. For example p2 could be a strict newer version of p1, so the p2 version is picked by the manifest merging, but then the file is manually updated before the commit. In this case the file should be detected as touched. Differential Revision: https://phab.mercurial-scm.org/D10220
Mon, 15 Mar 2021 13:37:45 +0100 copies: detect files as `touched/salvaged` if they only existed on one side
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 13:37:45 +0100] rev 46814
copies: detect files as `touched/salvaged` if they only existed on one side The file cannot be merged if there was content to merge on the other side. So the previous record was wrong. In the general case, the file existed only on one side and got touched during the merge. So it should detected as touched. They are a special case where the merge manually prevent the file to be deleted. In this case the file is marked as `salvaged`. The result of this `salvaged` recording, copy-tracing-wise, is the same as recording it as `merged`. This is probably why they were recorded as `merged` in the first place. Differential Revision: https://phab.mercurial-scm.org/D10219
Tue, 02 Mar 2021 02:00:29 +0100 test-copies: add a test updating file content while salvaging it
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Mar 2021 02:00:29 +0100] rev 46813
test-copies: add a test updating file content while salvaging it A deleted file is brought back during a merge. Its content is changed in the same go. This reveal some issue with the upgrade code. Differential Revision: https://phab.mercurial-scm.org/D10088
Sat, 13 Mar 2021 04:54:05 +0100 test-copies: show some wrong ChangedFiles upgrade
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 13 Mar 2021 04:54:05 +0100] rev 46812
test-copies: show some wrong ChangedFiles upgrade For file present only on one side and touched during merge, the upgrade code confused them as "merged". However they should be either "touched", or "salvaged" but they are currently recorded as "merged". See the next changesets for more details on these cases and fix. Differential Revision: https://phab.mercurial-scm.org/D10218
Wed, 10 Mar 2021 13:14:32 +0530 commit: get info from mergestate whether a file was merged or not
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Mar 2021 13:14:32 +0530] rev 46811
commit: get info from mergestate whether a file was merged or not While commiting a merge, the commit code does not know whether a file was merged during `hg merge` or not. This leads the commit code to look for filelog ancestor to choose parents of new filelog created on merge commit. This leads to wrong results in some cases as demonstrated by previous patch. From this patch, we start storing information about merged files in mergestate in stateextras and then use that on commit to detect whether we need to set two parents or not. Differential Revision: https://phab.mercurial-scm.org/D10149
Wed, 17 Mar 2021 20:06:35 +0100 revset: introduce a `nodefromfile` revset
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 20:06:35 +0100] rev 46810
revset: introduce a `nodefromfile` revset I though we had one, but actually we don't seem to. So here is a revset to reuse a list of node previously stored. Differential Revision: https://phab.mercurial-scm.org/D10230
Fri, 19 Mar 2021 00:28:30 -0400 commands: necessary annotations and assertions to pass pytype
Matt Harbison <matt_harbison@yahoo.com> [Fri, 19 Mar 2021 00:28:30 -0400] rev 46809
commands: necessary annotations and assertions to pass pytype This is a slightly less forceful incarnation of D7384, where pytype can be appeased with some assertions rather than disabling warnings. Differential Revision: https://phab.mercurial-scm.org/D10236
Thu, 18 Mar 2021 23:41:00 -0400 typing: mark the argument to mercurial.i18n.gettext() non-Optional
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Mar 2021 23:41:00 -0400] rev 46808
typing: mark the argument to mercurial.i18n.gettext() non-Optional Few if any of the callers are handling a `None` return, which is making pytype complain. I tried adding @overload definitions to indicate the bytes -> bytes and None -> None relationship, but pytype doesn't seem to apply that to `_()` through the function assignment. What did work was to change `_()` into its own function that called `gettext()`, but that has an extra function call overhead. Even putting that function into an `if pycompat.TYPE_CHECKING` block and leaving the existing assignments in the `else` block caused pytype to lose track of the @overloads. At that point, I simply gave up. PyCharm doesn't like that it can return None, given the new type hints, but pytype doesn't complain about this nor does it see any callers passing None. The most important thing here is to catch str being passed anyway. Differential Revision: https://phab.mercurial-scm.org/D10235
Thu, 18 Mar 2021 18:57:21 -0400 revlog: convert an Abort message to bytes
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Mar 2021 18:57:21 -0400] rev 46807
revlog: convert an Abort message to bytes Flagged by pytype. Differential Revision: https://phab.mercurial-scm.org/D10234
Wed, 17 Mar 2021 19:06:00 +0100 setdiscovery: add a discovery.grow-sample.dynamic option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 19:06:00 +0100] rev 46806
setdiscovery: add a discovery.grow-sample.dynamic option The current discovery dynamically adapt to complex situations. This makes it quick and effective, but also harder so study the effects of other improvements in such complex situation. So we add a new option to control this too. Differential Revision: https://phab.mercurial-scm.org/D10233
Wed, 17 Mar 2021 19:10:28 +0100 setdiscovery: rearrange code deciding if we will grow the sample
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 19:10:28 +0100] rev 46805
setdiscovery: rearrange code deciding if we will grow the sample The new code is clearer and will make the next update simpler. Differential Revision: https://phab.mercurial-scm.org/D10232
Wed, 17 Mar 2021 18:40:50 +0100 debugdiscovery: document relevant config option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 18:40:50 +0100] rev 46804
debugdiscovery: document relevant config option These config option are here for people to experiment with it. So lets document them in the command that is used for experimentation. Differential Revision: https://phab.mercurial-scm.org/D10231
Fri, 19 Mar 2021 12:08:46 -0700 rebase: skip obsolete commits even if they have pruned successors
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 Mar 2021 12:08:46 -0700] rev 46803
rebase: skip obsolete commits even if they have pruned successors Issue 5782 reported that `hg rebase -r <obsolete commit with pruned successor>` failed with an error saying that it would cause divergence. Commit b7e2cf114e85 (rebase: do not consider extincts for divergence detection (issue5782), 2018-02-09) fixed it by letting you rebase the commit. However, that fix seems inconsistent with how we handle `hg rebase -r <pruned commit>`. To me, it should make no difference whether a commit is pruned itself or if it has (only) pruned successors. This patch changes it so we treat these two kinds of commits the same way. I let the message we print remain "note: not rebasing <commit>, it has no successor" even though that last part is not technically correct for commits with pruned successors. I doubt it will confuse users. Differential Revision: https://phab.mercurial-scm.org/D10240
Sat, 20 Mar 2021 00:37:57 +0100 tests: ask any chg instance to terminate before looking at sqlite dbs
Joerg Sonnenberger <joerg@bec.de> [Sat, 20 Mar 2021 00:37:57 +0100] rev 46802
tests: ask any chg instance to terminate before looking at sqlite dbs There are spurious errors in CI where the database is still locked, so force the daemon to quit to get deterministic behavior. Since the kill command itself is racy, also sleep 2s to give the server time to wake up and exit. Differential Revision: https://phab.mercurial-scm.org/D10244
Sat, 20 Mar 2021 00:36:43 +0100 chg: kill trailing comma in SEE ALSO
Joerg Sonnenberger <joerg@bec.de> [Sat, 20 Mar 2021 00:36:43 +0100] rev 46801
chg: kill trailing comma in SEE ALSO Differential Revision: https://phab.mercurial-scm.org/D10243
Fri, 19 Mar 2021 23:16:09 -0700 bisect: use standard one-line commit summary
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 Mar 2021 23:16:09 -0700] rev 46800
bisect: use standard one-line commit summary This makes bisect use the standardized support for one-line commit summary I added a while back. That means that it will respect the `command-templates.oneline-summary` config. If also means that the default output now includes the first line of the commit message (see test impact). Differential Revision: https://phab.mercurial-scm.org/D10245
Fri, 19 Mar 2021 13:18:53 +0100 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net> [Fri, 19 Mar 2021 13:18:53 +0100] rev 46799
rhg: Add more conversions between error types This allows using the `?` operator in more places, as the next commit does. Differential Revision: https://phab.mercurial-scm.org/D10238
Fri, 19 Mar 2021 23:51:46 +0100 tests: resort to fix test with newer git versions
Joerg Sonnenberger <joerg@bec.de> [Fri, 19 Mar 2021 23:51:46 +0100] rev 46798
tests: resort to fix test with newer git versions Differential Revision: https://phab.mercurial-scm.org/D10242
Fri, 19 Mar 2021 23:34:29 +0100 git: fix missing case from 6266d19556ad (introduction of nodeconstants)
Joerg Sonnenberger <joerg@bec.de> [Fri, 19 Mar 2021 23:34:29 +0100] rev 46797
git: fix missing case from 6266d19556ad (introduction of nodeconstants) Differential Revision: https://phab.mercurial-scm.org/D10241
Thu, 18 Mar 2021 18:24:59 -0400 merge with stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Mar 2021 18:24:59 -0400] rev 46796
merge with stable
Tue, 02 Mar 2021 00:05:22 +0100 test-copies: add a test updating file content while merging a pure overwrite
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Mar 2021 00:05:22 +0100] rev 46795
test-copies: add a test updating file content while merging a pure overwrite As the current test misbehavior show, this confuse various part of the code: - the committed file is different depending of the commit source, - the upgrade code compute the wrong information on this changeset. This will be fixed in upcoming patches. Differential Revision: https://phab.mercurial-scm.org/D10087
Wed, 10 Mar 2021 13:08:41 +0530 mergestate: don't pop stateextras when there are no conflicts on filemerge
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Mar 2021 13:08:41 +0530] rev 46794
mergestate: don't pop stateextras when there are no conflicts on filemerge Even if `filemerge.filemerge()` didn't result in conflicts, we should not remove stateextras for a file since we now use that for more things than just merge time information. We use stateextras to store information which is required to be used by commit. I tracked this down while finding why a patch of mine which adds more commit related information does not work as expected and looses the extras in mergestate. Differential Revision: https://phab.mercurial-scm.org/D10148
Wed, 13 Jan 2021 16:14:58 +0100 node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de> [Wed, 13 Jan 2021 16:14:58 +0100] rev 46793
node: introduce nodeconstants class In preparing for moving from SHA1 hashes to a modern hash function, place nullid and other constant magic vules in a class. Provide the active set of constants in the repository and push it down. Provide nullid directly in strategic places like the repository as it is accessed very often. This changeset introduces the API change, but not the mechanical replacement of the node.py attributes itself. Differential Revision: https://phab.mercurial-scm.org/D9750
Wed, 10 Mar 2021 18:09:21 +0100 revlog: guarantee that p1 != null if a non-null parent exists
Joerg Sonnenberger <joerg@bec.de> [Wed, 10 Mar 2021 18:09:21 +0100] rev 46792
revlog: guarantee that p1 != null if a non-null parent exists This change does not affect the hashing (which already did this transformation), but can change the log output in the rare case where this behavior was observed in repositories. The change can simplify iteration code where regular changesets and merges are distinct branches. Differential Revision: https://phab.mercurial-scm.org/D10150
Wed, 10 Mar 2021 05:50:20 +0100 push: allow to specify multiple destinations
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 05:50:20 +0100] rev 46791
push: allow to specify multiple destinations I end up needing that on a regular basis and it turn out to be very simple to implement. See documentation and test for details. Differential Revision: https://phab.mercurial-scm.org/D10161
Wed, 17 Mar 2021 15:20:45 +0100 push: indent the some part of the command
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 15:20:45 +0100] rev 46790
push: indent the some part of the command That code will be put in a loop in the next changeset, pre-indenting make the next change clearer. Differential Revision: https://phab.mercurial-scm.org/D10160
Sun, 08 Nov 2020 20:17:09 +0100 bundle: optional multithreaded compression, ATM zstd-only
Joerg Sonnenberger <joerg@bec.de> [Sun, 08 Nov 2020 20:17:09 +0100] rev 46789
bundle: optional multithreaded compression, ATM zstd-only Compression type can be a huge chunk of "hg bundle", especially when using the higher compression levels. With level=22 and threads=7, the NetBSD test repository took 28:39 wall time and 157:47 user time. Before, level=22 would take 129:20 wall time and 129:07 user time. Differential Revision: https://phab.mercurial-scm.org/D9283
Sat, 13 Mar 2021 08:59:03 +0100 rust: Preallocate the returned `Vec` in `utils::files::relativize_path`
Simon Sapin <simon.sapin@octobus.net> [Sat, 13 Mar 2021 08:59:03 +0100] rev 46788
rust: Preallocate the returned `Vec` in `utils::files::relativize_path` Profiling `rhg files > /dev/null` on an old snapshot of mozilla-central (with `perf` and the Firefox Profiler: https://github.com/firefox-devtools/profiler/blob/main/docs-user/guide-perf-profiling.md) showed non-trivial time spend in this function and in `realloc`. This change makes the wall-clock time for that process on my machine go from ~190 ms to ~150 ms. Differential Revision: https://phab.mercurial-scm.org/D10199
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 tip