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
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
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
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Mar 2021 18:24:59 -0400] rev 46796
merge with stable
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
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
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
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
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
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
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
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
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:59:33 -0500] rev 46787
black: merge config into main pyproject.toml now that we have it
This means that naive contributors who just run `black` on a source file
will get reasonable behavior as long as they have a recent black. Yay!
This was previously D9834 but was rolled back due to test
failures. nbjoerg thinks it's time to try again, so let's give it a
shot.
Differential Revision: https://phab.mercurial-scm.org/D10185
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:52:04 -0500] rev 46786
pyproject: add config file
This will tell pip et al to call our setup.py for the majority of
packaging concerns, but also gives us a place to put standard config
stuff like black.
This was previously D9833, but was rolled back due to test
breakage. nbjoerg thinks that breakage is now resolved, so we're
trying again.
Differential Revision: https://phab.mercurial-scm.org/D10184
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Mar 2021 12:52:23 +0100] rev 46785
perf-util: add an helper revset to use the same spec as the case search script
This make result of the searcher script easier to use.
Differential Revision: https://phab.mercurial-scm.org/D10228
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 18:01:42 +0100] rev 46784
perf-helpers: add a search-discovery-case script
This a small script I built to look for interesting discovery case. It is fairly
basic but could be useful in various situation so lets put it in the main
repositories.
Differential Revision: https://phab.mercurial-scm.org/D10225
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Mar 2021 09:41:01 +0100] rev 46783
debugdiscovery: add missing byte string marker to some help text
This is causing crash when using --help.
Differential Revision: https://phab.mercurial-scm.org/D10227
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 17:09:42 +0100] rev 46782
debugdiscovery: also integrate the discovery output in the json one
We add a way for formatter to informs code that free output is unwanted, and we
incorporate it in the json output.
Differential Revision: https://phab.mercurial-scm.org/D10224
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 16:55:03 +0100] rev 46781
debugdiscovery: add support for Json output
They are some pre-output that will be impractical, I'll take care of it in the
next changeset.
Differential Revision: https://phab.mercurial-scm.org/D10223
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 16:37:11 +0100] rev 46780
perf-helper: add a new sampling revset based on anti-chain
See inline documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D10222
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 16:35:54 +0100] rev 46779
perf-helper: add a small extension with revsets to select repository subset
Playing with discovery requires building interesting case. To do this we
need revsets to try to generate them. We start with a quite simple one. See
documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D10221
Martin von Zweigbergk <martinvonz@google.com> [Tue, 26 Feb 2019 15:54:20 -0800] rev 46778
amend: mark commit obsolete after moving working copy
We were doing it this way:
1. move working copy (repo.setparents)
2. add obsmarkers (scmutil.cleanupnodes)
3. fix dirstate (dirstate.normal/drop)
Step 1 and 3 are closely related, so let's move them together. It
seems safest to create the obsmarkers last. This patch thus makes the
order 1, 3, 2.
Differential Revision: https://phab.mercurial-scm.org/D10197
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 06:03:01 +0100] rev 46777
pull: allow to specify multiple sources
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/D10159
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 06:03:55 +0100] rev 46776
pull: pre-indent a part of the function
We are about to run it in a loop, so lets pre-indent it to clarify the actual
change in the next changesets.
Differential Revision: https://phab.mercurial-scm.org/D10158
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 05:54:27 +0100] rev 46775
command: clarify `postincoming` return and that return handling
The command should return None or a return code. The previous code was returning
boolean directly relying on the fact that `True → 1` and `False → 0`. This is a
good road to troubles, so lets be explicit about that return.
Differential Revision: https://phab.mercurial-scm.org/D10157
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 05:54:02 +0100] rev 46774
hg: make `clean` return consistent with the `update` function
The function return a boolean and is used as such. Lets be explicit about it.
Differential Revision: https://phab.mercurial-scm.org/D10156
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 16:28:46 +0100] rev 46773
tests: rename `test-pull` to `test-pull-network.t`
If is mostly about ssh and http interaction so lets avoid confusion with a
generic `hg pull` test
Differential Revision: https://phab.mercurial-scm.org/D10155
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 16:35:17 +0100] rev 46772
tests: move a test about update in test-pull-update.t
Differential Revision: https://phab.mercurial-scm.org/D10154
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Mar 2021 09:15:40 -0800] rev 46771
split: close transaction in the unlikely event of a conflict while rebasing
`hg split` *should* never result in conflicts, but in case there are
bugs, we should at least commit the transaction so they can continue
the rebase. One of our users ran into the regression fixed by
D10120. They fixed the conflict and the tried to continue the rebase,
but it failed with "abort: cannot continue inconsistent rebase"
because the rebase state referred to commits written in a transaction
that was never committed.
Side note: `hg split` should probably turn off copy tracing to reduce
the impact of such bugs, and to speed it up as well. Copies made in
the rebased commits should still be respected because `hg rebase`
calls `copies.graftcopies()`.
Differential Revision: https://phab.mercurial-scm.org/D10164
Raphaël Gomès <rgomes@octobus.net> [Mon, 15 Mar 2021 13:05:00 +0100] rev 46770
rust-status: fix issue6456 for the Rust implementation also
This implementation is being used by a few people now, so we need it fixed, even
though a big rewrite will be coming quite soon.
Differential Revision: https://phab.mercurial-scm.org/D10217