Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 11:42:27 +0100] rev 46488
config: add a test for priority when includes are involved
Differential Revision: https://phab.mercurial-scm.org/D9915
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 16:26:53 -0800] rev 46487
errors: use InputError for incorrectly formatted dates
Differential Revision: https://phab.mercurial-scm.org/D9913
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 15:56:08 -0800] rev 46486
errors: use StateError more in merge module
Differential Revision: https://phab.mercurial-scm.org/D9912
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 12:16:55 -0800] rev 46485
errors: use exit code 40 for when a hook fails
A hook can be used for checking inputs, state, configuration,
security, etc., so it's unclear which of the existing exit codes to
use. Let's instead add one specifically for failed hooks. I picked 40.
Differential Revision: https://phab.mercurial-scm.org/D9910
Augie Fackler <augie@google.com> [Fri, 29 Jan 2021 12:50:10 -0500] rev 46484
context: add missing manifest invalidation after write in overlayworkingctx
This was breaking my merge-diff logic that will be in the next patch.
Differential Revision: https://phab.mercurial-scm.org/D9908
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 29 Jan 2021 17:32:09 +0530] rev 46483
merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Thu, 28 Jan 2021 00:14:15 -0800] rev 46482
copies: fix an incorrect comment in graftcopies() from recent D9802
I don't think the bit about creating a merge in the filelog was
correct. Or at least I couldn't find a case where it happened.
Differential Revision: https://phab.mercurial-scm.org/D9899
Martin von Zweigbergk <martinvonz@google.com> [Wed, 27 Jan 2021 22:10:57 -0800] rev 46481
narrow: delete a stale TODO about not sending groups the client already has
2c5835b4246b changed the changegroup generation to not send
treemanifests for directories the client had before widening. As that
commit mentions, we had already stopped before that commit to send the
changelog and filelogs for files the client already had.
Differential Revision: https://phab.mercurial-scm.org/D9898
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 00:03:18 +0100] rev 46480
copies: add an devel option to trace all files
Filelog based copy tracing only trace copy for file that have been added. This
is a trade off between skipping some rare copy case in exchange for avoiding
atrocious-to-the-point-of-unusable performance.
The changeset centric copy tracing does not need this trade off and naturally
trace all copy, include the one involving non-new files.
In order to ease the comparison from both algorithm, we add a small devel option
to trace copy for all files in the target revisions.
Differential Revision: https://phab.mercurial-scm.org/D9796
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jan 2021 15:26:33 +0100] rev 46479
revlog: prepare pure parser for being overloaded
The current class uses module-level variables which don't allow for reusing the
current logic for a slightly different revlog version.
Differential Revision: https://phab.mercurial-scm.org/D9903
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jan 2021 15:12:48 +0100] rev 46478
revlog: use a less probable revlog version for backwards compatibility
This allows us to define a usable v2.
Differential Revision: https://phab.mercurial-scm.org/D9902
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 15:06:02 +0100] rev 46477
clang-format: show required version in skip message
This will help people to configure their black
Differential Revision: https://phab.mercurial-scm.org/D9890
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 15:04:48 +0100] rev 46476
heptapod-ci: indicate which version of clang-format is used for the run
This will help understand possible mismatch
Differential Revision: https://phab.mercurial-scm.org/D9889
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 14:58:24 +0100] rev 46475
black: show required version in skip message
This will help people to configure their black
Differential Revision: https://phab.mercurial-scm.org/D9888
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 14:57:20 +0100] rev 46474
heptapod-ci: indicate which version of black is used for the run
This will help understand possible mismatch
Differential Revision: https://phab.mercurial-scm.org/D9887
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 15:53:32 +0100] rev 46473
heptapod-ci: add a default value for HG_CI_IMAGE_TAG
Differential Revision: https://phab.mercurial-scm.org/D9886
Nikita Slyusarev <nslus@yandex-team.com> [Tue, 12 Jan 2021 00:11:16 +0300] rev 46472
convert: option to set date and time for svn commits
Converting to subversion repository is not preserving original commit dates as
it may break some subversion functionality if commit dates are not monotonically
increasing.
This patch adds `convert.svn.dangerous-set-commit-dates` configuration option
to change this behaviour and enable commit dates convertion for those who want
to take risks.
Subversion always uses commit dates with UTC timezone, so only timestamps
are used.
Test `test-convert-svn-sink.t` uses `svnxml.py` script to dump history of svn
repositories. Atm the script is not printing `date` field from svn log. This
patch changes this to allow checks on correctness of date and time convertion.
Documentation is updated. Additional test case is added to test commit dates
convertion.
Differential Revision: https://phab.mercurial-scm.org/D9721
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 23:58:41 +0100] rev 46471
copies: simplify the conditional for _filter's case 3
The conditional is much simpler and the test are actually happier. This
clarification of the conditional will also be necessary to properly support tracing
more renames in a coming changeset.
Differential Revision: https://phab.mercurial-scm.org/D9795
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 23:49:51 +0100] rev 46470
copies: clarify which case some conditional are handling
This make the function a bit clearer. The middle conditional get no label
because we about about to remove it. See next changeset for details.
Differential Revision: https://phab.mercurial-scm.org/D9794
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 02:18:55 +0100] rev 46469
copies: explicitly filter out existing file in graftcopies
The `graftcopies` function does something very strange (maybe even wrong), it
calls `_filter` with a pair of changeset that does not match the one used to
compute the copies informations.
We are about to do some rework of `_filter` to make it closer to its documented
intent and fix a couple of bug. This means some of the logic that only make
sense for graft need to go somewhere else. We add the extra filtering with
proper documentation to `graftcopies`.
Differential Revision: https://phab.mercurial-scm.org/D9802
Augie Fackler <augie@google.com> [Fri, 22 Jan 2021 15:43:06 -0500] rev 46468
histedit: rip out mysterious catch-all ignore curses.error handler
I have no idea why this was here, and ripping it out doesn't obviously
break anything for me (tests all pass, I can poke around chistedit UI
a bit without issue), so I'm thinking we should rip it out and see if
we get bug reports.
Differential Revision: https://phab.mercurial-scm.org/D9855
Augie Fackler <augie@google.com> [Fri, 22 Jan 2021 15:32:00 -0500] rev 46467
histedit: notice when the main window underflows height and abort
If you try to have a 13-line-tall terminal and use curses histedit, it
fails by spinning in an infinite loop due to the catch-all ignore of
curses errors on line 1682 of histedit.py. We should also fix that
catch-all ignore of curses errors (what other demons lurk here, I
wonder?) but we can trivially catch this case and guide the user to a
happy path. We've seen this mostly in IDE users that have a tendency
to have really tiny embedded terminal windows.
Differential Revision: https://phab.mercurial-scm.org/D9854
Augie Fackler <augie@google.com> [Fri, 22 Jan 2021 15:29:12 -0500] rev 46466
histedit: don't assign to _ for unused values
I don't know what this ignored value is, but we need to not clobber
the _() function from gettext, or we get mysterious crashes instead of
internationalizing some strings in my upcoming patches.
Differential Revision: https://phab.mercurial-scm.org/D9853
Matt Harbison <matt_harbison@yahoo.com> [Tue, 26 Jan 2021 17:25:30 -0500] rev 46465
hghave: list the module needed for the `vcr` check
I'm tired of having to look up modules each time I setup a system, and try to
distinguish between similar package names to get the right one. Now that the
search API has been disabled, it's even harder. There are other python packages
here that should be listed like this, but this is the one that came up missing
today, so it's a start.
Differential Revision: https://phab.mercurial-scm.org/D9879
Joerg Sonnenberger <joerg@bec.de> [Tue, 26 Jan 2021 00:19:36 +0100] rev 46464
debugshell: add a simple command for starting an interactive shell
This simplifies interactive exploration of the Mercurial APIs.
The ui and repo instances are provided as local variables.
Differential Revision: https://phab.mercurial-scm.org/D9866
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 11:34:23 +0100] rev 46463
rust: replace an unsafe use of transmute with a safe use of bytes-cast
Differential Revision: https://phab.mercurial-scm.org/D9859
Simon Sapin <simon.sapin@octobus.net> [Fri, 15 Jan 2021 16:11:54 +0100] rev 46462
rust: use the bytes-cast crate to parse persistent nodemaps
This crate casts pointers to custom structs, with compile-time safety checks,
for easy and efficient binary data parsing.
See https://crates.io/crates/bytes-cast and
https://docs.rs/bytes-cast/0.1.0/bytes_cast/
Differential Revision: https://phab.mercurial-scm.org/D9788
Matt Harbison <matt_harbison@yahoo.com> [Mon, 25 Jan 2021 19:03:27 -0500] rev 46461
cext: restore the ability to build on Windows with py2
This broke in e92ca942ddca.
Differential Revision: https://phab.mercurial-scm.org/D9867
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 16:46:51 +0100] rev 46460
command-namespace: use `::` are the command separator
This was discussed on the mailing list / phab and `::` got a couple of positive
feedback.
I dediced to not introduce automatic folding of `::`, I feel like it make sense
for `-`, but I like the expliciteness of `::`.
So I am adding alias for backward compatibility.
Differential Revision: https://phab.mercurial-scm.org/D9872
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 23:13:01 +0100] rev 46459
perf: test the formatting of a command help
Since we are about to addd ':' in command name I want this covered.
Differential Revision: https://phab.mercurial-scm.org/D9871
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 23:08:33 +0100] rev 46458
help: escape ':' (as '\:') when generating command names
We need this before we can use ":" in command names.
Differential Revision: https://phab.mercurial-scm.org/D9870
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 23:07:56 +0100] rev 46457
minirst: respect escaping in definition list key
If we start adding `:` in command names… we need minirst to not choke on them.
Differential Revision: https://phab.mercurial-scm.org/D9869
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jan 2021 00:45:40 +0100] rev 46456
run-test: avoid byte issue when replacing output file of python test
Otherwise we get error like::
FileNotFoundError: [Errno 2] No such file or directory: "b'…/tests/test-minirst.py'.out"
Differential Revision: https://phab.mercurial-scm.org/D9868
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 16:34:43 +0100] rev 46455
store: use `endswith` to detect revlog extension
Suggested by Gregory Szorc.
Differential Revision: https://phab.mercurial-scm.org/D9865
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:59:33 -0500] rev 46454
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!
Differential Revision: https://phab.mercurial-scm.org/D9834
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:52:04 -0500] rev 46453
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.
Differential Revision: https://phab.mercurial-scm.org/D9833
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:37:10 +0530] rev 46452
upgrade: update only requirements if we can
Upgrade operations which involves just upgrading requirements earlier used to go
through whole revlog cloning business.
Now we just upgrade the requirement and skip the cloning part.
Differential Revision: https://phab.mercurial-scm.org/D9775
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:34:58 +0530] rev 46451
engine: add `if True` to prepare for next patch
This will help making next patch easier to read.
Differential Revision: https://phab.mercurial-scm.org/D9774
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 17:27:54 +0530] rev 46450
test: unquiet few tests to demonstrate changes in upcoming patches
Upcoming patches will skip revlog cloning for share-safe upgrades.
Differential Revision: https://phab.mercurial-scm.org/D9773
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:57:11 +0530] rev 46449
upgrade: mark sharesafe improvement as only touching requirements
Upgrading the repository to use share safe functionality only touches
requirements.
Differential Revision: https://phab.mercurial-scm.org/D9772
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 14 Dec 2020 16:20:00 +0530] rev 46448
actions: calculate what all parts does the operation touches
To make upgrade work less in certain situations, we need to teach it to find out
what all parts of repository current operation is touching.
This patch starts doing that. In next patch we will be setting values in
improvement objects. For now, we assume everything touches everything.
Differential Revision: https://phab.mercurial-scm.org/D9771
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:25:40 +0530] rev 46447
upgrade: don't create store backup if `--no-backup` is passed
If the user explicitly mentioned that they don't need backup, then let's not
create it.
Differential Revision: https://phab.mercurial-scm.org/D9770
Victor Stinner <vstinner@python.org> [Mon, 14 Dec 2020 10:44:29 +0100] rev 46446
cext: add Python 3.10 support
* Replace "Py_TYPE(obj) = type;" with "Py_SET_TYPE(obj, type);"
* Add pythoncapi_compat.h header file to get Py_SET_TYPE() on Python
2.7-3.8. Header file added to mercurial/ and
contrib/python-zstandard/zstd/common/.
In Python 3.10, Py_TYPE(obj) must not longer be used as an l-value.
pythoncapi_compat.h comes from:
https://github.com/pythoncapi/pythoncapi_compat
Differential Revision: https://phab.mercurial-scm.org/D9825
Joerg Sonnenberger <joerg@bec.de> [Wed, 20 Jan 2021 14:47:13 +0100] rev 46445
revlog: decouple caching from addrevision callback for addgroup
For changesets, it is useful to cache the content as it will almost
always be processed afterwards. For manifests on the other hand, the
content is often not used directly as there is a fast path for deltas.
Explicitly disable the cache in exchangev2's manifest handling for that
reason.
Differential Revision: https://phab.mercurial-scm.org/D9847
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:58:59 +0100] rev 46444
branchmap: update rev-branch-cache incrementally
Historically, the revision to branch mapping cache was updated on demand
and shared via bundle2 to avoid the cost of rebuilding on first use.
Use the new `register_changeset` callback and update rbc directly on
every change. Make the transfer of the bundle part redundant, but keep
it for the moment to avoid the test churn.
Over all, "hg unbundle" for large bundles is less than 1.8% slower for
different larger repositories and that seems to a reasonable trade off.
Differential Revision: https://phab.mercurial-scm.org/D9781
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:20:53 +0100] rev 46443
repository: introduce register_changeset callback
The new callback is called whenever a changeset is added to the repository
(commit, unbundle or exchange). Since the bulk operations already parse
the changeset (readfiles or full changesetrevision), always use the
latter to avoid redundant lookups. The first consumer of the new
interface needs to look at extra.
Differential Revision: https://phab.mercurial-scm.org/D9780
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:30:08 +0100] rev 46442
changelog: move branchinfo to changelogrevision
The function parses the extra dictionary after looking up the
changelogrevision. To avoid duplicated look up, it is better to provide
it as property of changelogrevision instead. Keep the function for a
release cycle as at least the topic extension depends on it.
Differential Revision: https://phab.mercurial-scm.org/D9779
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Fri, 22 Jan 2021 11:10:39 +0100] rev 46441
rust: lower compile error on non-linux platforms to a warning
As discussed on D9671#146704 this lowers the error to a warning.
Differential Revision: https://phab.mercurial-scm.org/D9852