Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 09 Oct 2019 22:59:38 +0200] rev 43146
sidedatacopies: read rename information from sidedata
Repository using the new format now use changeset centric algorithm and read the
copies information from the changelog sidedata.
Differential Revision: https://phab.mercurial-scm.org/D6953
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 10 Oct 2019 00:06:41 +0200] rev 43145
changelog: make copies related function return None or a valid value
With the previous code, existing but empty value were not "decoded", leading to
the method returning one of `None`, some valid value (`list` or `dict`) or
`b''`.
On a general basis, not explicitly checking for None is a source of bugs.
Having a clean return types will help the side-data copies code in future
changesets.
Differential Revision: https://phab.mercurial-scm.org/D7037
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 10 Oct 2019 00:01:40 +0200] rev 43144
test: fix zstd related output in pure tests
Differential Revision: https://phab.mercurial-scm.org/D7036
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43143
sidedatacopies: get and store sidedata in the changelogrevision object
The object provide a simple way to access changelog entry, we need it to also
bear the sidedata value.
Since the sidedata are retrieved at the same time as the revision, we can do
that without extra cost.
Differential Revision: https://phab.mercurial-scm.org/D6951
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43142
sidedatacopies: write copies information in sidedata when applicable
If the format of the repository indicate it stores copies information into
changeset's sidedata, then we actually write that information into sidedata at
commit time. It will be put to use in later changesets.
Currently, we store all field unconditionally, but that is likely to change in
the future for the sake of efficiency.
Differential Revision: https://phab.mercurial-scm.org/D6950
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43141
sidedatacopies: introduce a sidedata testcase for test-copies-in-changeset.t
For now it is equivalent to the filelog case, but introducing this early helps
make the comings changesets clearer.
Differential Revision: https://phab.mercurial-scm.org/D6949
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43140
sidedatacopies: introduce a sidedata testcase for test-copies-unrelated.t
For now it is equivalent to the filelog case, but introducing this early helps
make the comings changesets clearer.
Differential Revision: https://phab.mercurial-scm.org/D6948
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43139
sidedatacopies: introduce a sidedata testcase for test-copies.t
For now it is equivalent to the filelog case, but introducing this early helps
make the comings changesets clearer.
Differential Revision: https://phab.mercurial-scm.org/D6947
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43138
sidedatacopies: teach upgrade about the new requirement
The `debugformat` and `debugupgraderepo` command now detect the requirement.
(upgrade to and from are not currently possible).
Differential Revision: https://phab.mercurial-scm.org/D6946
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43137
sidedatacopies: add a new requirement for storing copies into sidedata
The end goal is to have changesets centric sidedata information stored into
changelog sidedata. This make it possible to use the changeset based copy
tracing algorithm on any repository without affecting hashes.
The actual implementation is coming. The feature is marked as experimental
(do not use in production) until we stabilise details about the format.
Differential Revision: https://phab.mercurial-scm.org/D6945
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43136
debugsidedata: small doc improvement
The command has a mode to actually show the sidedata, but it wasn't documented.
Differential Revision: https://phab.mercurial-scm.org/D6944
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43135
upgrade: allow for `sidedata` removal
If the side-date feature is removed, we need to drop them.
Differential Revision: https://phab.mercurial-scm.org/D6943
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43134
upgrade: allow upgrade to repository using sidedata
Repository can now be migrated to support sidedata. More requirements and
migration will be needed to actual side-data usage. This is a step in that
direction.
To test the feature, we leverage the test extension. It make sure the `update`
part of the side-data migration actually works.
Differential Revision: https://phab.mercurial-scm.org/D6942
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43133
revlog: add a way to control sidedata changes during revlog.clone
We introduce a new argument to pass a callable dealing with the side data logic.
Since the side data are usually associated to higher level logic, the revlog
code itself is unlikely to know that to do itself. As a result the higher level
upgrade code will be responsible to decide what needs to changes. The lower
level revlog.clone just get simple instructions to apply.
Differential Revision: https://phab.mercurial-scm.org/D6941
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43132
sidedata: use only changegroup3 if sidedata is in use
This is necessary to exchange the flags over the wire (and within bundles).
Differential Revision: https://phab.mercurial-scm.org/D6940
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 06 Oct 2019 23:36:51 -0400] rev 43131
sidedata: apply basic but tight security around exchange
We don't currently have code to deal with exchange between repository using
sidedata and repository not using sidedata. Until we implement such code (eg:
dropping side data when pushing to a non-sidedata repo) we prevent the two kind
of repo to speak to each other. This is somewhere similar to what 'treemanifest'
does.
Note that sidedata exchange is broken unless one use changegroup v3 anyway. See
next changeset for details.
Differential Revision: https://phab.mercurial-scm.org/D6939
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 02:19:04 -0400] rev 43130
perf: use `setup` function in `perfdirstatewrite`
The command seems to pre-date the introduction of the `setup` support in timer.
We move the line that is obviously about benchmark setup in such `setup`
function.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:49:34 -0400] rev 43129
perf: document `perfdirstatewrite`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 02:12:15 -0400] rev 43128
perf: use `setup` function in `perfdirfoldmap`
The command seems to pre-date the introduction of the `setup` support in timer.
We move the line that is obviously about benchmark setup in such `setup`
function.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:49:18 -0400] rev 43127
perf: document `perfdirfoldmap`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 02:16:15 -0400] rev 43126
perf: use `setup` function in `perfdirstatefoldmap`
The command seems to pre-date the introduction of the `setup` support in timer.
We move the line that is obviously about benchmark setup in such `setup`
function.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:48:10 -0400] rev 43125
perf: document `perfdirstatefoldmap`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 02:08:41 -0400] rev 43124
perf: use `setup` function in `perfdirstatedirs`
The command seems to pre-date the introduction of the `setup` support in timer.
We move the line that is obviously about benchmark setup in such `setup`
function.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:47:35 -0400] rev 43123
perf: document `perfdirstatedirs`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:57:10 -0400] rev 43122
perf: use `setup` function in `perfdirstate`
The command seems to pre-date the introduction of the `setup` support in timer.
We move the line that is obviously about benchmark setup in such `setup`
function.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:46:57 -0400] rev 43121
perf: document `perfdirstate`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 08 Oct 2019 01:15:28 -0400] rev 43120
perf: document `perfstatus`
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 09 Oct 2019 15:24:14 +0200] rev 43119
py3: flush ui after each message in interactive patch filtering
Otherwise, actions from ui.write() are buffered and displayed at end of
interactive session.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 09 Oct 2019 15:28:16 +0200] rev 43118
py3: decode prompt string before calling rawinput
Calling input() (aka pycompat.rawinput() on python3) with a byte string
displays a byte string in the console. E.g. in interactive commit, we
get: b"examine changes to '<file>'?\n(enter ? for help) [Ynesfdaq?]".
Similarly, "hg email" prompts are messed up.
We thus decode the prompt string before running rawinput().
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Oct 2019 15:06:18 -0700] rev 43117
cleanup: join string literals that are already on one line
Thanks to Kyle for noticing this and for providing the regular
expression to run on the codebase.
This patch has been reviewed by the test suite and they approved of
it.
# skip-blame: fallout from mass reformatting
Differential Revision: https://phab.mercurial-scm.org/D7028
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Oct 2019 15:15:37 -0700] rev 43116
debugcommands: add a few more writenoi18n()
Differential Revision: https://phab.mercurial-scm.org/D7027
Martin von Zweigbergk <martinvonz@google.com> [Sun, 06 Oct 2019 20:17:41 -0700] rev 43115
py3: delete b'' prefix from safehasattr arguments
Differential Revision: https://phab.mercurial-scm.org/D7029