Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:39:13 +0200] rev 50523
stream-clone: check is a compatible protocol can be found
The previous code was explicitly checking if "v2" is listed in the "stream"
bundle2 capability. The new code is checking is there is anything common
between the versions supported client side and server side overlaps.
This prepare the introduction of more stream version than "v2".
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:22:49 +0200] rev 50522
stream-clone: bail-out earlier if stream clone is not requested
The `canperformstreamclone` function is bit messy. However it seems clearer to
me to check if a stream-clone have been requested by the client or the server
at all, before checking if a compatible protocol can be negotiated with the
server.
So I am doing some gratuitous movement so reorder conditional.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:19:26 +0200] rev 50521
stream-clone: bail-out earlier if pull is partial
The `canperformstreamclone` function is bit messy. However it seems clearer to
me to process the very generic condition about "can we consider a stream-clone
at all", before checking if a stream-clone is requested and if a compatible
protocol can be negotiated with the server.
So I am doing some gratuitous movement so reorder conditional.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:17:27 +0200] rev 50520
stream-clone: bail-out earlier if destination repo is not empty
The `canperformstreamclone` function is bit messy. However it seems clearer to
me to process the very generic condition about "can we consider a stream-clone
at all", before checking if a stream-clone is requested and if a compatible
protocol can be negotiated with the server.
So I am doing some gratuitous movement so reorder conditional.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Sun, 21 May 2023 00:00:57 +0200] rev 50519
stream-clone: check the version of streaming clone supported by the client
Make the server refuse to produce streaming clone bundle, if the client
doesn't specify the stream=v2 capability.
This is in preparation to introduce stream=v3.
As far as I can tell, this capability was added at the same time as
support for bundle2-based streaming pulls was added, so I don't expect
clients to break. (the modern client doesn't break, at any rate)
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 01:03:19 +0200] rev 50518
stream-clone: make sure the `stream` capability is set when bundling
This is important to start narrowing protocol option in the next changesets.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Sun, 21 May 2023 00:00:29 +0200] rev 50517
stream-clone: upgrade the error message for bad stream request
The new version if more compact and more consistent with the general Mercurial
usage.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 03:21:00 +0200] rev 50516
stream-clone: yield cache entry in `_entries_walk` too
The new function now cover the same ground as _v2_walk.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 03:10:59 +0200] rev 50515
stream-clone: introduce a _entries_walk
That function insert itself between the store and `_v2_walk`. It only deals with
StoreEntry unlike `_v2_walk` that deal with actual file.
A share of the `_v2_walk` logic will be moved in this new `_entry_walk`
function. Having this function will help us to implement a new "v3" version of
the protocol that will be more entry centric.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 02:29:33 +0200] rev 50514
store: make `walk` return an entry for obsolescence if requested so
Instead of having dedicated code in the streamclone code, we should have the
store deal with advertising the data it contains.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 02:16:24 +0200] rev 50513
store: yield phases before changelog
Creating the `changelog.i` file make the repository usable, so dealing with phase earlier seems better.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 02:15:04 +0200] rev 50512
store: make `walk` return an entry for phase if requested so
Instead of having dedicated code in the streamclone code, we should have the
store deal with advertising the data it contains.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 22 May 2023 10:20:24 +0100] rev 50511
cli: add a test of `hg debugnodemap --manifest`
this is a new option that's not tested yet
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 19:37:12 +0100] rev 50510
cli: fix spelling in `debugnodemap` error messages
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 18:45:54 +0100] rev 50509
cli: make debugnodemap capable of inspecting an arbitrary nodemap
This lets us inspect the manifest nodemap and individual directory
nodemaps when treemanifest is used.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 17:53:17 +0100] rev 50508
rust: mostly avoid streaming zstd decompression
Streaming ZStd decompression seems slightly slower, and
the API we use makes it very inconvenient to re-use the
decompression context.
Instead of using that, use the buffer-backed version,
because we can give a reasonable-ish size estimate.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 17:25:18 +0100] rev 50507
rust: in zstd decompression, avoid a useless vec initialization
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 17:18:54 +0100] rev 50506
rust: speed up zstd decompression by re-using the decompression context
Admittedly, zstd is already pretty fast, but this change makes it
a bit faster yet: it saves ~5% of time it takes to read our large repo.
The actual motivating use case is treemanifest: in treemanifest
we end up reading *lots* of small directories, and many of them
need decompression, and there the saving for [rhg files] is >10%.
(which also seems unreasonable, we should probably keep things uncompressed more)
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 May 2023 10:44:25 +0200] rev 50505
store: rename `topfiles` to `top_entries`
The method is now returning StoreEntries let us rename the method for clarity.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 May 2023 10:43:36 +0200] rev 50504
store: rename `datafiles` to `data_entries`
The method is now returning StoreEntries let us rename the method for clarity.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:03:39 +0200] rev 50503
store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:11:27 +0200] rev 50502
store: use the new boolean property in `upgrade`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:11:02 +0200] rev 50501
store: use the new boolean property in `remotefilelogserver`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:10:33 +0200] rev 50500
store: use the boolean property in `repair_
issue6528`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:10:04 +0200] rev 50499
store: use the new boolean property in `narrow`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:09:43 +0200] rev 50498
store: use the boolean property in `store`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:09:15 +0200] rev 50497
store: introduce boolean property for revlog type
This will avoid exposing implementation details to more generic code.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:03:15 +0200] rev 50496
store: issue a single entry for each revlog
We now yield a single entry, with data about each files involved. This help to
simplify multiple code using this and it will help to further simplify and
fixes the streaming code.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:59 +0200] rev 50495
store: rename `unencoded_path` to `entry_path` for StoreEntry
This remove the ambiguity with StoreFile and make sure use code will be using
the right API.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:43 +0200] rev 50494
store: do the revlog matching on entry directly
This is the last blocker to safely merge the revlog files in a single entry.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:26 +0200] rev 50493
store: split the wrapping of encodedstore between _wrap and datafiles
The `datafiles` method of `basicstore` is doing a lot of work that should be
done on decoded filename. So we now wrap `_walk` to do the decoding, and less
work in `datafiles`.
This is necessary to make sure file from the same revlog can be grouped
together.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:09 +0200] rev 50492
store: introduce a main_file_path method for revlog
This help code that need to point revlog to an index file. This is put to use
in the upgrade code.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:53 +0200] rev 50491
upgrade: actually use StoreEntry API to create revlog
Lets make use of the semanctic of the object we are passed.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:36 +0200] rev 50490
upgrade: use StoreEntry object in upgrade
We will make more use of the API in the next changeset, but just moving to use
entry is a significant change for the engine codebase.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:18 +0200] rev 50489
upgrade: drop a quick fix that is not longer necessary
We won't issue bad revlog from topfile anymore.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:02 +0200] rev 50488
store: use StoreEntry API instead of parsing filename in largefile
This is more explicit and more robust.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:00:46 +0200] rev 50487
store: use StoreEntry API instead of parsing filename when listing manifestlog
This is more explicit and more robust.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:00:28 +0200] rev 50486
store: use StoreEntry API instead of parsing filename when fixing
issue6528
This is more explicit and more robust.
We also introduce a small output change as it make things simpler and this is a
affecting a debug-command.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:00:13 +0200] rev 50485
store: use StoreEntry API instead of parsing filename in remotefilelog
This is more explicit and more robust.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:56 +0200] rev 50484
store: use StoreEntry API instead of parsing filename in narrow
This is more explicit and more robust.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:38 +0200] rev 50483
store: add a `target_id` attribute on RevlogStoreEntry
This hold the "target" (file, directory, etc) of a revlog. Having this
available will help a lot of code to avoid direct file path access.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:22 +0200] rev 50482
store: actually tag tree manifest revlogs as manifest revlogs
It turn out we have been mislabeling these for a long while. This is now fixed.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:06 +0200] rev 50481
store: also gather files per revlog in `topfiles`
This conclude out revlog gathering.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:49 +0200] rev 50480
store: also group files by revlog in fncache version of datafiles
One more step.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:33 +0200] rev 50479
store: add logic to group revlog file together
For now each file get its own entry, this will help stopping this, soon™.
We use such gathering in the `basicstore` code.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:16 +0200] rev 50478
store: change `_walk` return to `(filename, (type, size))`
If we are to group file per revlog, having the filename as the "main key" will be useful. This change will make the following changes clearer.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:01 +0200] rev 50477
store: lazily get file size on demand for the fncache case
We don't have the information in the first place, so we can avoid querying the
file system inconditionnaly for use case we don't needs it.
This change requires the StoreFile class to be passed a vfs to retrieve the
file_size if needed.
In the non-fncache case, we already have the information from file system
walking, so we keep it and use it.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:57:45 +0200] rev 50476
store: only access is_volatile information through the file object
This make sure other code only access this information through the proper API,
and it prepare for store entries to be able to agregate multiple files.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:57:30 +0200] rev 50475
store: only access file_size information through the file object
This make sure other code only access this information through the proper API,
and it prepare for store entries to be able to agregate multiple files.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:57:14 +0200] rev 50474
store: have custom init for entries class
This will get useful to add special processing later in this series.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:56 +0200] rev 50473
store: use specialized class for store entries
We introduce two different classes for revlog and other entries. For now, we
still have multiple entry for the same revlog, but we will work toward grouping
the different file in a single entry in this series.
Having the distinction is a step toward this goal.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:40 +0200] rev 50472
store: introduce a EntryFile object to actually access file info
For now a StoreEntry match a single file, but the goal is to eventually combine
multiple file in a higher level Entry, so we need to introduce this distinction
and use it first.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:23 +0200] rev 50471
store: use a StoreEntry object instead of tuple for store files
We want to make the store return more semantic information instead of a stream
of file path. To achieve this, we start with adding a simple object that hold
the same information as the tuple it replace, and do a simple update to the
user code to fetch and use the same information.
From there, we will be able to iteratively upgrade the codebase toward better
objects.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:08 +0200] rev 50470
store: no longer explicitly mark the splitted index as ignored
Since the fncache is going to automatically recognised it as non "normal"
revlog file, we don't need to explicitly make it ignored.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:55:52 +0200] rev 50469
store: cleanup what is recognized as a revlog file
The temporary file from `censor` are not relevant to the store as they are just
temporary. So let `fncache` and `datafiles` forget about them.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:55:34 +0200] rev 50468
store: only inclure revlog related file in `datafiles`
This is a "reading" equivalent of the previous patches (see that patch for
details).
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:55:19 +0200] rev 50467
store: do not record file that are not part of a revlog in fncache
The fncache exist to list file to copy/stream when cloning a repository, it
should only contains file that are relevant for a revlog in such case. For
example, temporary file are not relevant.
So we now skip the addiction of non-relevant file to the fn-cache in the first place.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:55:02 +0200] rev 50466
revlog-split: expand the some test to cover the success case too
It seems useful to double check the case of a transaction successfully
committed before trying the one with transaction abort.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:54:47 +0200] rev 50465
transaction: use a ".bck" extension for all backup file
There are too much code in Mercurial that assume file function from extension.
Keeping the original extension when doing backup is just creating confusion
(for exemple, backup of revlog's confused with new version revlogs).
So we change the backup name from now on to be explicilty backup file and
prevent this kind of problem.
(note that repository using fncache is less affected (but still affected) by
this kind of problem as the backup are not listed in the fncache).
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:54:33 +0200] rev 50464
repair-
issue6528: remove a now useless continue
The condition for that continue have been excplicly filtered out of the `files`
list a handful of line earlier.
Raphaël Gomès <rgomes@octobus.net> [Tue, 09 May 2023 11:35:50 +0200] rev 50463
branching: merge stable into default
pacien <pacien.trangirard@pacien.net> [Fri, 28 Apr 2023 12:12:42 +0200] rev 50462
stabletailgraph: clarify omission of linear parts in test sorts
Those are not interesting and are collapsed using globs.
Only the tagged nodes are interesting.
pacien <pacien.trangirard@pacien.net> [Fri, 28 Apr 2023 11:50:49 +0200] rev 50461
stabletailgraph: omit uninteresting linear parts in test log
The test uses tags for the nodes of interest.
There is no need to print the linear parts which exist only to force the rank.
pacien <pacien.trangirard@pacien.net> [Sun, 16 Apr 2023 22:49:42 +0200] rev 50460
stabletailgraph: fix typo in test
pacien <pacien.trangirard@pacien.net> [Sun, 16 Apr 2023 22:17:30 +0200] rev 50459
stabletailgraph: fix terminology in doc
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Apr 2023 16:28:43 +0200] rev 50458
perf: introduce a `perf::stream-locked-section` command
This command benchmark the initial part of a stream clone, where the repository
is locked.
Anton Shestakov <av6@dwimlabs.net> [Wed, 03 May 2023 18:17:32 -0300] rev 50457
transaction: tr._names are actually bytes, use byte string to join them
Looks like this is never checked in the tests? But trying e.g. `print(tr)` by
hand before this change would give:
TypeError: sequence item 0: expected str instance, bytes found
Looks like tr._names are always bytes (although this isn't actually enforced,
but maybe at some point it will at least be type checked e.g. by pytype).
pacien <pacien.trangirard@pacien.net> [Mon, 17 Apr 2023 00:27:46 +0200] rev 50456
nix: add nix-defined package and devel env (flake)
This adds a Nix Flake which defines:
- package recipies to build and run Mercurial (C, C+Rust variants),
- a meta package to run the test suite in an isolated sandbox,
- a development environment with some tools
(notably Python and the Black formatter, pinned to match the CI).
Python is pinned to the recommended version.
The Rust toolchain is a fairly recent one provided by the Nixpkgs channel.
It is not yet pinned to the same version as the "reference" Debian package,
but this does not seem to cause any issue.
Example usage of local commands are provided in the `flake.nix` file.
Once merged, it should also be possible to pull and run directly from the
source repository directly with something like:
`nix run hg+https://foss.heptapod.net/mercurial/mercurial-devel?ref=TOPIC&dir=contrib/nix' -- version`
pacien <pacien.trangirard@pacien.net> [Thu, 20 Apr 2023 16:55:19 +0200] rev 50455
hgignore: ignore nix result symlink
pacien <pacien.trangirard@pacien.net> [Sun, 16 Apr 2023 23:48:24 +0200] rev 50454
tests: add test ignore list for nix
Some tests cannot run properly in the nix sandbox.
This adds a list of tests to ignore when running in that context.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Mar 2023 14:29:35 +0000] rev 50453
ui: keep the progress bar around when writing if stdout is not a tty
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 10 Mar 2023 11:20:18 +0000] rev 50452
tests: in filterpyflakes, tolerate non-ascii file contents
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 30 Jan 2023 13:37:48 +0000] rev 50451
comments: fix spelling
Axel Prel <axel.prel@xcg-consulting.fr> [Fri, 07 Apr 2023 14:23:12 +0200] rev 50450
heptapod-ci: display python version
it will be useful to debug in the CI
Raphaël Gomès <rgomes@octobus.net> [Tue, 18 Apr 2023 11:55:23 +0200] rev 50449
branching: merge stable into default
Sevan Janiyan <venture37@geeklan.co.uk> [Fri, 14 Apr 2023 19:59:44 +0100] rev 50448
sha1dc: Make sure SHA1DC_BIGENDIAN is set on Darwin/PowerPC
__BYTE_ORDER__ is not defined on old toolchains so sha1dc gets
built in little endian mode on a big endian platform, hilarity
ensues. Tested on Mac OS X Tiger 10.4.
Manuel Jacob <me@manueljacob.de> [Sat, 13 Apr 2019 03:44:55 +0200] rev 50447
hidden: add support to explicitly access hidden changesets with SSH peers
This implements support for using --remote-hidden with an SSH server. The
remote `hg serve --stdio` call is passed the `--hidden` flag as a request to
access hidden changesets.
This approach has benefits similar to the one we used for HTTP peers. It
* works around the lack of global parameters in wire protocol v1,
* reuses the `--hidden` flag (that does not use the wireproto), and
* can be safely ignored by older client (fitting the best effort contract).
Same as for HTTP, the feature is experimental so we have all the room we needs
to update the implementation in the future if deemed necessary.
The SSH version of the `--remote-hidden` config uses the same configuration as
the HTTP support to control the access to this feature. The name of the user
running the command is used for the checking.
Test written by Pierre-Yves David.
Manuel Jacob <me@manueljacob.de> [Sat, 13 Apr 2019 03:44:47 +0200] rev 50446
hidden: support passing --hidden with `serve --stdio`
This currently has no effect since the server code will filter the repository
again. However, it is clearer to put this change in its own changeset.
This will mostly impact ssh peers, clients being now able to pass --hidden when
spawning the server.
See the next changeset for details on how this is going to be used.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 13 Apr 2019 01:53:59 +0200] rev 50445
hgweb: move ismember from `hgweb.common` to `scmutil`
To implement hidden access control for other protocol than http, we need code
outside of hgweb to access this logic.
Manuel Jacob <me@manueljacob.de> [Fri, 05 Apr 2019 01:17:15 +0200] rev 50444
hidden: add support for --remote-hidden to HTTP peer
Test written by Pierre-Yves David.
Manuel Jacob <me@manueljacob.de> [Sat, 13 Apr 2019 02:01:26 +0200] rev 50443
hidden: add support to explicitly access hidden changesets via HTTP
We now detect hidden access request and validate them while handling HTTP
wireprotocol command. This changeset only introduces server support. Client
support is added in a subsequent changeset.
The mechanism we use for the HTTP wireprotocol is the same as the one used to
lift filtering for hgweb. The use of the global `access-hidden` parameter in
the http url is a simple and effective approach that
* works around the lack of global parameters in wire protocol v1,
* reuses the mechanism used for hgweb (that does not use the wireproto), and
* can be safely ignored by older client (fitting the best effort contract).
The feature is still experimental, so we can easily update the implementation
details in the future. However, landing a first implementation now will help
test the feature in the wild and iterate on alternative implementations if
deemed necessary.
Manuel Jacob <me@manueljacob.de> [Sat, 13 Apr 2019 02:00:20 +0200] rev 50442
hidden: support for explicitly accessing hidden changesets in wireproto server
This installs the basic infrastructure to be able to access hidden changeset
through the wireprotocol. Each wireprotocol server still needs a way to define
how the feature is triggered.
Manuel Jacob <me@manueljacob.de> [Fri, 05 Apr 2019 12:11:52 +0200] rev 50441
hidden: add support for --remote-hidden to localpeer
Manuel Jacob <me@manueljacob.de> [Thu, 04 Apr 2019 18:07:30 +0200] rev 50440
pull: add --remote-hidden option and pass it through peer creation
This option will allow to pull changesets that are hidden on the remote. This
is useful when looking into a changeset’s evolution history, resolving
evolution instability or mirroring a repository.
The option is best effort and will only affect the pull when it can. The option
will be ignored when it cannot be honored.
Support for each type of peer is yet to be implemented. They currently all warn
about lack of support. The warning code will get removed as peers gain
support for this option.
The option is still experimental, so we will have freedom to update the UI or
implementation before it graduates out of experimental.
Based on a changeset by Pierre-Yves David, which added the option.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 13 Apr 2019 01:17:56 +0200] rev 50439
hgweb: add support to explicitly access hidden changesets
This changeset adds a "global" `access-hidden` argument to hgweb. This argument
lift the "hidden" filtering. This means the request has access to hidden (eg:
obsolete) changesets. Secret changesets remains filtered.
This feature has multiple applications. The first main use case is to allow the
hgweb interface to display more obsolescence related data, such as the Anton
Shestakov work to add `obslog` support to hgweb.
The second foreseen usecase is support for a `--remote-hidden` argument to `hg
pull` and `hg clone`. This flag will make it possible to retrieve hidden
(typically obsolete) changeset under some conditions. This is useful when
digging up obsolescence history or when doing full mirroring. More on this
feature coming in later changesets.
To avoid exposing information by mistake, access to this feature is currently
controlled with the `experimental.server.allow-hidden-access` config option. The
option works the same way as `web.allow-push`. The current default is to not
allow any hidden access. However we might change it before the feature stop
being experimental.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Mar 2023 05:30:34 +0100] rev 50438
clone-bundles: add an option to generate bundles in the background
This is what the "on-change" version have been doing from the start, it seems
useful to also offer this option in the command.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Mar 2023 05:09:16 +0100] rev 50437
clone-bundles: add a command to clear all bundles
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Mar 2023 04:46:53 +0100] rev 50436
clone-bundles: add more test cases for automatic generation
See inline documentation for details.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Mar 2023 19:16:19 +0100] rev 50435
clone-bundles: introduce a command to refresh bundle
This command allows for a different mode than the one attached to the
transation. It might fit some hosting setup better.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Mar 2023 04:18:45 +0100] rev 50434
clone-bundles: add a configuration to control auto-generation on changes
We are about to introduce a "manual" way to deal with automatic clone management
but running a command using some internal API. The first step is to introduce a
way to control the "on changes" behavior.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Mar 2023 18:44:52 +0100] rev 50433
clone-bundles: also control automation based on absolute number of revisions
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Mar 2023 20:01:42 +0100] rev 50432
clone-bundles: only regenerate the clone bundle when cached ration is low
See inline documentation for details.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 Mar 2020 03:25:33 +0100] rev 50431
clone-bundles: garbage collect older bundle when generating new ones
See inline documentation for details.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Mar 2023 17:34:18 +0100] rev 50430
clone-bundles: add a basic first version of automatic bundle generation
See inline documentation for details.
Raphaël Gomès <rgomes@octobus.net> [Fri, 14 Apr 2023 10:41:40 +0200] rev 50429
branching: merge stable into default
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 12 Apr 2023 00:57:01 +0200] rev 50428
tests: automatically glob the discovery timing information
Time is not stable in tests.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 06 Apr 2023 11:41:51 +0100] rev 50427
rhg: support `status --print0`
This seems very easy to support, and useful because it makes it possible
to parse the [hg status] output even if the user creates files
with '\n' characters by accident.
pacien <pacien.trangirard@pacien.net> [Thu, 30 Mar 2023 22:22:44 +0200] rev 50426
stabletailgraph: implement stable-tail sort
This adds the computation of the "stable-tail sort", an incremental node
sorting method. It is a stepping stone for the implementation of faster
label discovery (for example for obs markers) and more caching.
Raphaël Gomès <rgomes@octobus.net> [Wed, 05 Apr 2023 16:09:08 +0200] rev 50425
heptapod: add `.gitattributes` file to improve language detection
I am fully aware of the irony.
Manuel Jacob <me@manueljacob.de> [Fri, 07 Apr 2023 15:42:49 +0200] rev 50424
peer: rename makepeer() → _make_peer()
In httppeer and sshpeer, there previously were makepeer() and make_peer(),
which was confusing. Therefore, this changeset renames one of the functions.
makepeer() was the internal function called by make_peer() and some debug
command. This function is renamed to _make_peer().
Georges Racinet <georges.racinet@octobus.net> [Tue, 04 Apr 2023 11:58:35 +0200] rev 50423
rust: configure MSRV in Clippy
This setting makes Clippy never apply lints that are meant for
later versions. In case the target precise toolchain is the one
running, it does not make a difference, but this gives us a
machine-parseable specification that is pretty standard.
The README and `hg help rust` are updated to state that `clippy.toml`
is the single source of truth about that, also lifting a minor ambiguity:
it is fine if the MSRV is lagging behind the version in Debian testing.
Georges Racinet <georges.racinet@octobus.net> [Tue, 04 Apr 2023 11:47:32 +0200] rev 50422
rust-readme: mentioned that format check is enforced by CI
Georges Racinet <georges.racinet@octobus.net> [Tue, 04 Apr 2023 11:46:26 +0200] rev 50421
rust-readme: mentioning clippy
especially since there is a CI check for it.
Georges Racinet <georges.racinet@octobus.net> [Tue, 04 Apr 2023 11:44:43 +0200] rev 50420
rust-readme: rst fixes
Georges Racinet <georges.racinet@octobus.net> [Mon, 03 Apr 2023 16:29:30 +0200] rev 50419
rustdoc: nodemap doc refreshing
Not pretending to be comprehensive.
- correcting some inconsistencies
- adding a few missing doc-comments
- adding more cross references (in some cases it's right beside
the current documentation item, but it will nevertheless also
be useful, because `rustdoc` will warn us if inconsistencies
arise).
Georges Racinet <georges.racinet@octobus.net> [Mon, 03 Apr 2023 16:14:34 +0200] rev 50418
rustdoc: fixed or introduced crossrefs in nodemap.rs
Georges Racinet <georges.racinet@octobus.net> [Mon, 03 Apr 2023 16:03:41 +0200] rev 50417
rustdoc: summary line for hg_path_to_os_string
The main motivation of this change is to avoid the TODO being
the summary line, even though this leads to a pretty obvious summary.
Then doc-comments for the other functions are introduced for
consistency.
Georges Racinet <georges.racinet@octobus.net> [Mon, 03 Apr 2023 15:58:36 +0200] rev 50416
rustdoc: wording for checkexec
Notably separating the summary line for correct display
at module level.
Georges Racinet <georges.racinet@octobus.net> [Mon, 03 Apr 2023 15:32:39 +0200] rev 50415
rustdoc: fixed warnings about links
This is the minimal fix making those that actually were supposed
to be links to work (including in private items).
Georges Racinet <georges.racinet@octobus.net> [Thu, 30 Mar 2023 12:21:38 +0200] rev 50414
rust-changelog: introduce ChangelogEntry parent entries accessors
Straightforwards now that lifetimes are explicit in `RevlogEntry`
parent accessors.
Georges Racinet <georges.racinet@octobus.net> [Thu, 30 Mar 2023 12:20:53 +0200] rev 50413
rust-revlog: fix lifetime problem for RevlogEntry parent entries accessors
Without this, the lifetime of the result is equated to the lifetime of the
`self` reference, preventing callers, e.g., to take a `RevlogEntry` and
return its `p1_entry()`, as it looks like returning something that does not
outlive the *reference to* the `RevlogEntry`.
Georges Racinet <georges.racinet@octobus.net> [Thu, 30 Mar 2023 12:14:57 +0200] rev 50412
rust-revlog: explicit naming for `RevlogEntry` lifetime
This matches what has been done in `revlog::changelog::ChangelogRevisionData`,
and has the advantage of making things clearer when we introduce other, shorter
lived lifetimes.
Georges Racinet <georges.racinet@octobus.net> [Wed, 29 Mar 2023 20:50:42 +0200] rev 50411
rust-changelog: introducing an intermediate `ChangelogEntry`
Before this change, client code needing to extract, e.g, the Node ID and the
description from a changeset had no other choice than calling both
`entry_for_rev()` and `data_for_rev()`. This duplicates some (limited) computation, and
more importantly imposes bad hygiene for client code: at some point of developement,
the client code would have to pass over both entry and data in its internal layers,
which at some point of development would raise the question whether they are consistent.
We introduce the intermediate `ChangelogEntry` from which both conversion to the generic
`RevlogEntry` and extraction of `ChangelogRevisionData` are possible.
It might grow some convenience methods in the future.
We keep the `data_for_rev()` method of `Changelog` for compatibility, pointing users at the more
powerful alternative.
Georges Racinet <georges.racinet@octobus.net> [Wed, 29 Mar 2023 21:03:39 +0200] rev 50410
rust-changelog: added a test for `NULL_REVISION` special case
The result is due to `Revlog.get_rev_data()` returning an empty
byte string for `NULL_REVISION`, followed by special case for
emtpty byte strings in `ChangelogRevisionData::new()`.
Georges Racinet <georges.racinet@octobus.net> [Wed, 29 Mar 2023 20:24:58 +0200] rev 50409
rust-changelog: made doc-comments more consistent
The most important is the one about `data_for_rev`, that looked like
a copy-paste leftover (got me confused first time I read this code, before
I actually learned there were both `Entry` and RevisionData`.
In the comment for the `struct`, "changelog" was probably more about
the format in general (as documented elsewhere) than as an identifier.
Some of the "Return something" had "of", half had "for".
Jason R. Coombs <jaraco@jaraco.com> [Tue, 21 Mar 2023 20:47:30 -0400] rev 50408
extras: re-use Projection from jaraco.collections
Jason R. Coombs <jaraco@jaraco.com> [Tue, 21 Mar 2023 17:21:45 -0400] rev 50407
extras: expose 'retained_extras' for extensions to extend
Jason R. Coombs <jaraco@jaraco.com> [Tue, 21 Mar 2023 17:17:09 -0400] rev 50406
extras: extract function for projecting names from a gettable object
Manuel Jacob <me@manueljacob.de> [Sat, 25 Mar 2023 23:02:33 +0100] rev 50405
hgweb: add "children" into the JSON template for a changeset
The children are shown in the HTML templates, so I don’t see a reason against including them in the JSON template as well.
Raphaël Gomès <rgomes@octobus.net> [Fri, 24 Mar 2023 10:43:47 +0100] rev 50404
branching: merge stable into default