Sun, 20 Aug 2023 17:04:17 -0400 narrow: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 17:04:17 -0400] rev 50881
narrow: migrate `opts` to native kwargs
Sun, 20 Aug 2023 16:51:49 -0400 largefiles: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:51:49 -0400] rev 50880
largefiles: migrate `opts` to native kwargs
Sun, 20 Aug 2023 16:43:41 -0400 keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:43:41 -0400] rev 50879
keyword: migrate `opts` to native kwargs
Sun, 20 Aug 2023 16:20:56 -0400 gpg: use a context manager to write `.hgsigs`
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:20:56 -0400] rev 50878
gpg: use a context manager to write `.hgsigs`
Sun, 20 Aug 2023 16:19:41 -0400 gpg: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:19:41 -0400] rev 50877
gpg: migrate `opts` to native kwargs
Sun, 20 Aug 2023 16:10:22 -0400 fetch: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:10:22 -0400] rev 50876
fetch: migrate `opts` to native kwargs
Sun, 20 Aug 2023 16:06:08 -0400 fastexport: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:06:08 -0400] rev 50875
fastexport: migrate `opts` to native kwargs
Mon, 21 Aug 2023 09:50:31 -0400 closehead: wrap transaction handling in a context manager
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 09:50:31 -0400] rev 50874
closehead: wrap transaction handling in a context manager
Sun, 20 Aug 2023 15:38:35 -0400 closehead: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 15:38:35 -0400] rev 50873
closehead: migrate `opts` to native kwargs
Sun, 20 Aug 2023 15:34:11 -0400 churn: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 15:34:11 -0400] rev 50872
churn: migrate `opts` to native kwargs
Sun, 20 Aug 2023 15:30:39 -0400 children: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 15:30:39 -0400] rev 50871
children: migrate `opts` to native kwargs
Sun, 20 Aug 2023 15:24:58 -0400 automv: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 15:24:58 -0400] rev 50870
automv: migrate `opts` to native kwargs
Sun, 20 Aug 2023 15:16:18 -0400 absorb: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 15:16:18 -0400] rev 50869
absorb: migrate `opts` to native kwargs
Mon, 21 Aug 2023 10:21:58 -0400 transaction: fix __repr__() and make the default name bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 10:21:58 -0400] rev 50868
transaction: fix __repr__() and make the default name bytes This likely was always wrong on py3, since going back to aff5996f3043, these were added as a r-strings. Callers seem to always be supplying bytes, which makes the `b'/'.join(...)` part OK, but then bytes can't be interpolated into str with "%s", so it wouldn't have worked in either case.
Thu, 17 Aug 2023 15:53:32 -0400 rhg: support rhg files [FILE]
Spencer Baugh <sbaugh@janestreet.com> [Thu, 17 Aug 2023 15:53:32 -0400] rev 50867
rhg: support rhg files [FILE] This comes mostly for free after the rhg status [FILE] implementation.
Wed, 02 Aug 2023 10:46:47 -0400 rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 10:46:47 -0400] rev 50866
rhg: support "status FILE" This change adds a new [file] argument to rhg status, parses them as patterns, canonicalizes the paths, and constructs a new PatternMatcher to intersect with the existing matcher being passed to the status implementation. We also make filepatterns a public module so we can access the pattern-parsing functionality we need from commands/status.rs.
Wed, 02 Aug 2023 10:16:33 -0400 rust-matchers: add PatternMatcher
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 10:16:33 -0400] rev 50865
rust-matchers: add PatternMatcher This should match the behavior of the Python patternmatcher. We need this for status [FILES] support.
Wed, 02 Aug 2023 10:33:11 -0400 rust-status: only visit parts of the tree requested by the matcher
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 10:33:11 -0400] rev 50864
rust-status: only visit parts of the tree requested by the matcher This is an optimization that the matcher is designed to support, but we weren't doing it until now. This is primarily relevant for supporting "hg status [FILES]", where this optimization is crucial for getting good performance (without this optimization, that command will still scan the entire tree, and just filter it down after the fact). When this optimization fires we have to return false from traverse_fs_directory_and_dirstate, representing that that part of the tree *might* have new files which we didn't see because we skipped parts of it. This only affects the cached result of the status, and is necessary to make future status operations (which might use a different matcher) work properly.
Wed, 02 Aug 2023 10:21:18 -0400 rust-status: error on non-existent files in file_set
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 10:21:18 -0400] rev 50863
rust-status: error on non-existent files in file_set file_set here consists of the files that were explicitly specified on the command line. Erroring on them matches the behavior of Python status.
Wed, 02 Aug 2023 10:07:00 -0400 rust-status: explicitly track bad file types
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 10:07:00 -0400] rev 50862
rust-status: explicitly track bad file types Before this, we silently skipped bad file types. Now, we check to see if a path is an exact_match in our matcher, and if so, print an error for it, and only then do we skip it. A path will be an exact match when it's specified as an explicit command line argument, and this error-printing behavior is necessary for compatibility with Python status.
Mon, 14 Aug 2023 09:25:36 -0400 rust: de-hardcode glob_suffix
Spencer Baugh <sbaugh@janestreet.com> [Mon, 14 Aug 2023 09:25:36 -0400] rev 50861
rust: de-hardcode glob_suffix We're adding patternmatcher in a subsequent commit, and this needs needs to be different for includematcher and patternmatcher.
Tue, 08 Aug 2023 11:50:26 -0400 rust: improve the type on DirsMultiset::from_manifest
Spencer Baugh <sbaugh@janestreet.com> [Tue, 08 Aug 2023 11:50:26 -0400] rev 50860
rust: improve the type on DirsMultiset::from_manifest It could only return an HgPathError, but we didn't express this in the type, so we needed some unreachable!()s. Now that is expressed in the type.
Wed, 02 Aug 2023 09:59:49 -0400 rust: don't escape spaces in regex
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 09:59:49 -0400] rev 50859
rust: don't escape spaces in regex Spaces are not in fact a regex special character, and escaping them is not correct.
Wed, 02 Aug 2023 10:09:23 -0400 rust-filepatterns: also normalize RelPath
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 10:09:23 -0400] rev 50858
rust-filepatterns: also normalize RelPath These patterns should be normalized too; this at least does no harm, and is necessary for proper status support.
Wed, 09 Aug 2023 18:08:28 -0400 rust: simplify pattern file parsing
Spencer Baugh <sbaugh@janestreet.com> [Wed, 09 Aug 2023 18:08:28 -0400] rev 50857
rust: simplify pattern file parsing Previously we kept the pattern syntax as a &[u8] until the last possible moment, which meant we had to handle potential errors when parsing that &[u8]. But such errors could never actually occur, given the structure of the code. Now we parse it eagerly (in two places) and pass it around as a PatternSyntax, so we can delete some error handling code. parse_one_pattern is in particular useful for parsing patterns passed on the command line, as we'll support later in this series.
Wed, 02 Aug 2023 09:57:29 -0400 rust-matchers: better support file_set in IntersectionMatcher
Spencer Baugh <sbaugh@janestreet.com> [Wed, 02 Aug 2023 09:57:29 -0400] rev 50856
rust-matchers: better support file_set in IntersectionMatcher Previously, if both of the input matchers had non-exact file sets, IntersectionMatcher would simply have an empty fileset. Now, we duplicate Python behavior: we *union* the filesets of the matchers in that case. This makes some sense, because without exact input file sets, we can't do an exact intersection and must over-approximate. Concretely, this is necessary because the file_set is the list of files that were explicitly listed by the user, and we want to provide explicit errors for all such files, from both matchers.
Mon, 21 Aug 2023 10:00:08 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 21 Aug 2023 10:00:08 +0200] rev 50855
branching: merge stable into default
Sun, 20 Aug 2023 02:17:38 -0400 version: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 02:17:38 -0400] rev 50854
version: migrate `opts` to native kwargs
Sun, 20 Aug 2023 02:16:41 -0400 verify: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 02:16:41 -0400] rev 50853
verify: migrate `opts` to native kwargs
Sun, 20 Aug 2023 02:14:57 -0400 tags: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 02:14:57 -0400] rev 50852
tags: migrate `opts` to native kwargs
Sun, 20 Aug 2023 02:13:50 -0400 tag: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 02:13:50 -0400] rev 50851
tag: migrate `opts` to native kwargs
Sun, 20 Aug 2023 02:10:51 -0400 summary: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 02:10:51 -0400] rev 50850
summary: migrate `opts` to native kwargs This has the added benefit of unconfusing PyCharm- it thought `opts` in the nested functions were str based for some reason.
Sun, 20 Aug 2023 02:01:37 -0400 revert: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 02:01:37 -0400] rev 50849
revert: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:56:23 -0400 rename: drop an unnecessary variable declaration at a wider scope
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:56:23 -0400] rev 50848
rename: drop an unnecessary variable declaration at a wider scope
Sun, 20 Aug 2023 01:54:59 -0400 rename: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:54:59 -0400] rev 50847
rename: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:53:47 -0400 remove: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:53:47 -0400] rev 50846
remove: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:51:52 -0400 purge: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:51:52 -0400] rev 50845
purge: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:49:48 -0400 pull: avoid referencing a variable before it is initialized
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:49:48 -0400] rev 50844
pull: avoid referencing a variable before it is initialized If `urlutil.get_pull_paths()` somehow yields nothing, the reference after the loop appears to be a problem. I noticed this because PyCharm flagged (and still flags) the initialization of this inside the loop as somehow unused. I'm not sure why 1 isn't returned directly where it is set to the result of `postincoming()`, but maybe the code is structured this way in anticipation of future work.
Sun, 20 Aug 2023 01:40:50 -0400 pull: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:40:50 -0400] rev 50843
pull: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:35:14 -0400 paths: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:35:14 -0400] rev 50842
paths: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:32:22 -0400 merge: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:32:22 -0400] rev 50841
merge: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:29:27 -0400 manifest: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:29:27 -0400] rev 50840
manifest: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:27:36 -0400 locate: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:27:36 -0400] rev 50839
locate: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:24:29 -0400 import: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:24:29 -0400] rev 50838
import: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:20:59 -0400 heads: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:20:59 -0400] rev 50837
heads: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:17:45 -0400 forget: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:17:45 -0400] rev 50836
forget: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:15:15 -0400 copy: drop an unused variable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:15:15 -0400] rev 50835
copy: drop an unused variable
Sun, 20 Aug 2023 01:14:42 -0400 copy: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:14:42 -0400] rev 50834
copy: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:12:26 -0400 config: use the writefile() utility to create the sample hgrc
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:12:26 -0400] rev 50833
config: use the writefile() utility to create the sample hgrc This function uses a context manager.
Sun, 20 Aug 2023 01:08:58 -0400 config: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:08:58 -0400] rev 50832
config: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:02:52 -0400 clone: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:02:52 -0400] rev 50831
clone: migrate `opts` to native kwargs
Sun, 20 Aug 2023 01:00:11 -0400 bundle: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 01:00:11 -0400] rev 50830
bundle: migrate `opts` to native kwargs
Sun, 20 Aug 2023 00:56:58 -0400 branches: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 00:56:58 -0400] rev 50829
branches: migrate `opts` to native kwargs
Sun, 20 Aug 2023 00:55:52 -0400 branch: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 00:55:52 -0400] rev 50828
branch: migrate `opts` to native kwargs
Sun, 20 Aug 2023 00:44:15 -0400 bookmark: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 00:44:15 -0400] rev 50827
bookmark: migrate `opts` to native kwargs There are a bunch of callers for `ui.formatter()`, so convert to bytes only for that call.
Sun, 20 Aug 2023 00:35:28 -0400 archive: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 00:35:28 -0400] rev 50826
archive: migrate `opts` to native kwargs I'm not sure how to handle migrating core APIs like `scmutil.match`, so kick that can down the road. (Plus it's used all over, so the callers need to be migrated first.)
Sun, 20 Aug 2023 00:27:27 -0400 backout: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 00:27:27 -0400] rev 50825
backout: migrate `opts` to native kwargs It will take a bit to unwind `cmdutil.commit`, so there's a conversion to byteskwargs there, without changing the type of `opts` in this function. That's also useful to flag it as needing to be changed.
Sat, 19 Aug 2023 23:06:40 -0400 cmdutil: migrate `opts` on commitstatus() to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Sat, 19 Aug 2023 23:06:40 -0400] rev 50824
cmdutil: migrate `opts` on commitstatus() to native kwargs
Sat, 19 Aug 2023 22:56:14 -0400 cat: avoid round tripping **opts -> byteskwargs -> strkwargs
Matt Harbison <matt_harbison@yahoo.com> [Sat, 19 Aug 2023 22:56:14 -0400] rev 50823
cat: avoid round tripping **opts -> byteskwargs -> strkwargs Some internal users still want byteskwargs, so they are serviced in place. Once this pattern of changing types is eliminated everywhere, the remaining internal uses can be cleaned up individually (hopefully).
Sun, 20 Aug 2023 16:32:18 -0400 gpg: fix an UnboundLocalError whenever using --force stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 20 Aug 2023 16:32:18 -0400] rev 50822
gpg: fix an UnboundLocalError whenever using --force It looks like this has been broke for almost a decade, since 9c89ac99690e.
Thu, 10 Aug 2023 19:00:19 +0100 rhg: fix the bug where sparse config is interpreted as relglob instead of glob stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 10 Aug 2023 19:00:19 +0100] rev 50821
rhg: fix the bug where sparse config is interpreted as relglob instead of glob relglob apparently (in contrast with relpath) matches everywhere in the tree, whereas glob only matches at the root. The python version interprets these patterns as "glob" (see "normalize(include, b'glob', ...)" in match.py)
Mon, 07 Aug 2023 23:12:02 +0200 hgweb: encode WSGI environment using the ISO-8859-1 codec stable
Manuel Jacob <me@manueljacob.de> [Mon, 07 Aug 2023 23:12:02 +0200] rev 50820
hgweb: encode WSGI environment using the ISO-8859-1 codec The WSGI specification (PEP 3333) specifies that on Python 3 all strings passed by the server must be of type str with code points encodable using the ISO 8859-1 codec. For some reason, I introduced a bug in 2632c1ed8f34 by applying the reverse change. Maybe I got confused because PEP 3333 says that arbitrary operating system environment variables may be contained in the WSGI environment and therefore we need to handle the WSGI environment variables like we would handle operating system environment variables. The bug mentioned in the previous paragraph and fixed by this changeset manifested e.g. in the path of the URL being encoded in the wrong way. Browsers encode non-ASCII bytes with the percent-encoding. WSGI servers will decode the percent-encoded bytes and pass them to the application as strings where each byte is mapped to the corresponding code point with the same ordinal (i.e. it is decoded using the ISO-8859-1 codec). Mercurial uses the bytes type for these strings (which makes much more sense), so we need to encode it again using the ISO-8859-1 codec. If we use another codec, it can result in nonsense.
Mon, 07 Aug 2023 11:08:00 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 07 Aug 2023 11:08:00 +0200] rev 50819
branching: merge stable into default
Mon, 07 Aug 2023 11:05:43 +0200 Added signature for changeset 787af4e0e8b7 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 07 Aug 2023 11:05:43 +0200] rev 50818
Added signature for changeset 787af4e0e8b7
Mon, 07 Aug 2023 11:05:27 +0200 Added tag 6.5.1 for changeset 787af4e0e8b7 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 07 Aug 2023 11:05:27 +0200] rev 50817
Added tag 6.5.1 for changeset 787af4e0e8b7
Mon, 07 Aug 2023 11:04:53 +0200 relnotes: add 6.5.1 stable 6.5.1
Raphaël Gomès <rgomes@octobus.net> [Mon, 07 Aug 2023 11:04:53 +0200] rev 50816
relnotes: add 6.5.1
Thu, 22 Jun 2023 16:02:12 +0200 perf: fix perf::tags stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 22 Jun 2023 16:02:12 +0200] rev 50815
perf: fix perf::tags That return is invalid and unnecessary.
Fri, 21 Jul 2023 15:50:56 +0200 revlog: fix the naming scheme use by split temporary file stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 21 Jul 2023 15:50:56 +0200] rev 50814
revlog: fix the naming scheme use by split temporary file The `-s` is now added on the first piece only and the `.i` is added to the index. This match the initially intended naming scheme.
Fri, 21 Jul 2023 15:15:43 +0200 revlog: show that temporary split file use broken name scheme stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 21 Jul 2023 15:15:43 +0200] rev 50813
revlog: show that temporary split file use broken name scheme The `-s` is added on the wrong part and the `.i` is missing.
Thu, 13 Jul 2023 19:36:43 +0100 fncache: fix a bug that corrupts the fncache after transaction rollback stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 13 Jul 2023 19:36:43 +0100] rev 50812
fncache: fix a bug that corrupts the fncache after transaction rollback
Thu, 13 Jul 2023 19:26:45 +0100 fncache: add a test demonstrating fncache corruption stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 13 Jul 2023 19:26:45 +0100] rev 50811
fncache: add a test demonstrating fncache corruption
Mon, 24 Jul 2023 05:13:52 +0200 transaction: actually delete file created during the transaction on rollback
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 24 Jul 2023 05:13:52 +0200] rev 50810
transaction: actually delete file created during the transaction on rollback Transaction currently has two modes: - one where file created during the transaction are deleted on rollback, - one where file created during the transaction are truncated to 0 on rollback. Before this change, `hg rollback` and `hg recover` are using the "delete" mode and transaction abort is using the "truncate" option. This difference is never really explained. A long time ago, there was two code paths, with this divergence existing for unclear reasons. When the two code paths got merged into a single one, a boolean argument have been added to preserve this divergence, mostly probably as a cargo cult. The divergence is weird and induce bad surprises, and the truncate behavior is a bit odds, introducing other bad surprises (e.g. 08ecbdba186f) So solve this, we stop using the "truncate" behavior and unify on the "delete" behavior. Despite being currently more "common", the truncate behavior seems less natural, resulting in the transaction leaving empty file around. This is landed on default, early in the cycle, to help us catch problems that could emerge.
Fri, 28 Jul 2023 17:08:37 +0100 rhg: tweak rhg fallback code structure
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 28 Jul 2023 17:08:37 +0100] rev 50809
rhg: tweak rhg fallback code structure The goal here is to share the code that accesses the config setting, but also move it to the top-level, so that we can more easily change this code later. (in fact in Jane Street we want to make it choose chg in some cases)
Fri, 21 Jul 2023 15:26:15 +0200 journal: track bookmark deletion
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 21 Jul 2023 15:26:15 +0200] rev 50808
journal: track bookmark deletion Bookmark deletion are now properly tracked by the journal extensions.
Fri, 21 Jul 2023 15:28:52 +0200 journal: show that we do not track deletion
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 21 Jul 2023 15:28:52 +0200] rev 50807
journal: show that we do not track deletion This was an oversight for the initial implementation.
Fri, 21 Jul 2023 09:22:18 -0700 contrib: upgrade merge-lists from clap v3 to clap v4
Martin von Zweigbergk <martinvonz@google.com> [Fri, 21 Jul 2023 09:22:18 -0700] rev 50806
contrib: upgrade merge-lists from clap v3 to clap v4 Mostly to avoid having clap v3 in our dependencies, due to https://osv.dev/vulnerability/GHSA-g98v-hv3f-hcfr (even though that seems pretty harmless).
Wed, 19 Jul 2023 21:45:39 +0200 compat: use cp -R in `test-revlog-delta-find.t` (issue6835) stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 19 Jul 2023 21:45:39 +0200] rev 50805
compat: use cp -R in `test-revlog-delta-find.t` (issue6835) This follow POSIX and make things compatible with NetBSD.
Wed, 19 Jul 2023 17:42:33 +0200 compat: use cp -R in `test-bundle-phase-internal.t` (issue6835) stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 19 Jul 2023 17:42:33 +0200] rev 50804
compat: use cp -R in `test-bundle-phase-internal.t` (issue6835) This follow POSIX and make things compatible with NetBSD.
Fri, 21 Jul 2023 03:56:28 +0200 infinitepush: drop the extension
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 21 Jul 2023 03:56:28 +0200] rev 50803
infinitepush: drop the extension The writing have been on the wall for a long time.
Fri, 23 Jun 2023 13:27:09 +0200 perf: display all timing by default
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 23 Jun 2023 13:27:09 +0200] rev 50802
perf: display all timing by default This is much more useful and end up enable it everywhere. I don't think we have strong backward compatibility guarantee for perf.
Mon, 10 Jul 2023 10:53:12 +0200 wrapfunction: deprecated calling "wrapfunction" with bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 10:53:12 +0200] rev 50801
wrapfunction: deprecated calling "wrapfunction" with bytes This will help us to detect and eradicates legacy calls. This is on the path to deprecating `util.safehasattr`.
Mon, 10 Jul 2023 15:39:19 +0200 wrapfunction: deprecates calling `wrappedfunction` with bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 15:39:19 +0200] rev 50800
wrapfunction: deprecates calling `wrappedfunction` with bytes This will help us to detect and eradicates legacy calls. This is on the path to deprecating `util.safehasattr`.
Mon, 10 Jul 2023 19:34:04 +0200 wrapfunction: use sysstr instead of bytes as argument in various tests
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 19:34:04 +0200] rev 50799
wrapfunction: use sysstr instead of bytes as argument in various tests This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 19:33:14 +0200 wrapfunction: use sysstr instead of bytes as argument in "exthelper"
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 19:33:14 +0200] rev 50798
wrapfunction: use sysstr instead of bytes as argument in "exthelper" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 15:38:53 +0200 wrapfunction: use sysstr instead of bytes as argument in "sqlitestore"
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 15:38:53 +0200] rev 50797
wrapfunction: use sysstr instead of bytes as argument in "sqlitestore" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 19:32:17 +0200 wrapfunction: use sysstr instead of bytes as argument in "share"
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 19:32:17 +0200] rev 50796
wrapfunction: use sysstr instead of bytes as argument in "share" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 19:31:26 +0200 wrapfunction: use sysstr instead of bytes as argument in "perf"
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 19:31:26 +0200] rev 50795
wrapfunction: use sysstr instead of bytes as argument in "perf" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:30:44 +0100 wrapfunction: use sysstr instead of bytes as argument in "zeroconf"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:30:44 +0100] rev 50794
wrapfunction: use sysstr instead of bytes as argument in "zeroconf" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:27:17 +0100 wrapfunction: use sysstr instead of bytes as argument in "sqlitestore"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:27:17 +0100] rev 50793
wrapfunction: use sysstr instead of bytes as argument in "sqlitestore" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:26:18 +0100 wrapfunction: use sysstr instead of bytes as argument in "sparse"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:26:18 +0100] rev 50792
wrapfunction: use sysstr instead of bytes as argument in "sparse" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:25:57 +0100 wrapfunction: use sysstr instead of bytes as argument in "schemes"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:25:57 +0100] rev 50791
wrapfunction: use sysstr instead of bytes as argument in "schemes" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:25:43 +0100 wrapfunction: use sysstr instead of bytes as argument in "remotenames"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:25:43 +0100] rev 50790
wrapfunction: use sysstr instead of bytes as argument in "remotenames" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:25:07 +0100 wrapfunction: use sysstr instead of bytes as argument in "remotefilelog"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:25:07 +0100] rev 50789
wrapfunction: use sysstr instead of bytes as argument in "remotefilelog" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:24:53 +0100 wrapfunction: use sysstr instead of bytes as argument in "pager"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:24:53 +0100] rev 50788
wrapfunction: use sysstr instead of bytes as argument in "pager" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:24:40 +0100 wrapfunction: use sysstr instead of bytes as argument in "narrow"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:24:40 +0100] rev 50787
wrapfunction: use sysstr instead of bytes as argument in "narrow" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:23:12 +0100 wrapfunction: use sysstr instead of bytes as argument in "lfs"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:23:12 +0100] rev 50786
wrapfunction: use sysstr instead of bytes as argument in "lfs" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:22:41 +0100 wrapfunction: use sysstr instead of bytes as argument in "largefiles"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:22:41 +0100] rev 50785
wrapfunction: use sysstr instead of bytes as argument in "largefiles" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:22:28 +0100 wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:22:28 +0100] rev 50784
wrapfunction: use sysstr instead of bytes as argument in "keyword" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:22:15 +0100 wrapfunction: use sysstr instead of bytes as argument in "journal"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:22:15 +0100] rev 50783
wrapfunction: use sysstr instead of bytes as argument in "journal" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:21:55 +0100 wrapfunction: use sysstr instead of bytes as argument in "infinitepush"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:21:55 +0100] rev 50782
wrapfunction: use sysstr instead of bytes as argument in "infinitepush" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:21:32 +0100 wrapfunction: use sysstr instead of bytes as argument in "histedit"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:21:32 +0100] rev 50781
wrapfunction: use sysstr instead of bytes as argument in "histedit" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:20:58 +0100 wrapfunction: use sysstr instead of bytes as argument in "highlight"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:20:58 +0100] rev 50780
wrapfunction: use sysstr instead of bytes as argument in "highlight" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 16:47:25 +0200 wrapfunction: use sysstr instead of bytes as argument in the "git" extension
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 16:47:25 +0200] rev 50779
wrapfunction: use sysstr instead of bytes as argument in the "git" extension This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:19:06 +0100 wrapfunction: use sysstr instead of bytes as argument in "fsmonitor"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:19:06 +0100] rev 50778
wrapfunction: use sysstr instead of bytes as argument in "fsmonitor" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 16:12:33 +0200 wrapfunction: use sysstr instead of bytes as argument in "fastannotate"
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 16:12:33 +0200] rev 50777
wrapfunction: use sysstr instead of bytes as argument in "fastannotate" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:10:22 +0100 wrapfunction: use sysstr instead of bytes as argument in "clonebundles"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:10:22 +0100] rev 50776
wrapfunction: use sysstr instead of bytes as argument in "clonebundles" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:10:00 +0100 wrapfunction: use sysstr instead of bytes as argument in "bookflow"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:10:00 +0100] rev 50775
wrapfunction: use sysstr instead of bytes as argument in "bookflow" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Fri, 03 Feb 2023 04:09:49 +0100 wrapfunction: use sysstr instead of bytes as argument in "beautifygraph"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 04:09:49 +0100] rev 50774
wrapfunction: use sysstr instead of bytes as argument in "beautifygraph" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.
Mon, 10 Jul 2023 15:59:04 +0200 byteify-strings: passe sysstr to attr function and wrapper
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jul 2023 15:59:04 +0200] rev 50773
byteify-strings: passe sysstr to attr function and wrapper These function now accepts string so we should not do byteify them anymore.
Wed, 12 Jul 2023 12:47:08 +0200 repoview: fix the filter created by `extrafilter` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 12 Jul 2023 12:47:08 +0200] rev 50772
repoview: fix the filter created by `extrafilter` The `name` variable was updated in each interaction of the loop, making all new filters inheriting from the same base (the last one iterated), leading to terrible terrible misbehavior.
Wed, 12 Jul 2023 12:46:58 +0200 repoview: show `extrafilter` misbehave when other filtering is in play stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 12 Jul 2023 12:46:58 +0200] rev 50771
repoview: show `extrafilter` misbehave when other filtering is in play See new changeset for fix and details.
Wed, 12 Jul 2023 10:59:19 +0200 rust-config: add docstring to inner `get_parse` method
Raphaël Gomès <rgomes@octobus.net> [Wed, 12 Jul 2023 10:59:19 +0200] rev 50770
rust-config: add docstring to inner `get_parse` method The signature is quite heavy, a docstring to explain the idea doesn't hurt.
Thu, 06 Jul 2023 11:44:30 +0200 rust-config: add devel warning when using undeclared config items
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 11:44:30 +0200] rev 50769
rust-config: add devel warning when using undeclared config items This mirrors the Python implementation now that we're done catching up.
Thu, 06 Jul 2023 12:17:20 +0200 rhg: use default configitem in `cat`
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 12:17:20 +0200] rev 50768
rhg: use default configitem in `cat` Now that we've declared the items, we can get rid of the manual fallback.
Thu, 06 Jul 2023 11:47:41 +0200 rhg: add config defaults to configitems.toml
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 11:47:41 +0200] rev 50767
rhg: add config defaults to configitems.toml This will allow us to use the same default config mechanic as the rest of the code.
Thu, 06 Jul 2023 11:17:55 +0200 rust-blackbox: use `is_extension_enabled` config helper
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 11:17:55 +0200] rev 50766
rust-blackbox: use `is_extension_enabled` config helper It's there, may as well use it to make the code clearer and less bug-prone.
Wed, 05 Jul 2023 23:59:22 +0200 configitems: move blackbox's config items to the new configitems.toml
Raphaël Gomès <rgomes@octobus.net> [Wed, 05 Jul 2023 23:59:22 +0200] rev 50765
configitems: move blackbox's config items to the new configitems.toml In order for the Rust code to gain access to default values of in-core extensions that have a Rust implementation, we need to centralize them alongside the core items declarations. This is the first and so far only one of the extensions that have gained Rust support, I don't think it's worth the churn to move the rest of the extension's configitems yet.
Mon, 13 Feb 2023 18:11:48 +0100 rust-config: add config getters that don't fall back to defaults
Raphaël Gomès <rgomes@octobus.net> [Mon, 13 Feb 2023 18:11:48 +0100] rev 50764
rust-config: add config getters that don't fall back to defaults This is useful in cases where we access config items that are more... lenient with their types than a fresh new system would allow. For now there is only a single use of this, but we might get more later.
Thu, 06 Jul 2023 14:32:07 +0200 rust-config: add support for default config items
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 14:32:07 +0200] rev 50763
rust-config: add support for default config items Now that configitems.toml exists, we can read from it the default values for all core config items. We will add the devel-warning for use of undeclared config items in a later patch when we're done adding the missing entries for `rhg`.
Mon, 23 Jan 2023 18:08:11 +0100 configitems: declare items in a TOML file
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Jan 2023 18:08:11 +0100] rev 50762
configitems: declare items in a TOML file Mercurial ships with Rust code that also needs to read from the config. Having a way of presenting `configitems` to both Python and Rust is needed to prevent duplication, drift, and have the appropriate devel warnings. Abstracting away from Python means choosing a config format. No single format is perfect, and I have yet to come across a developer that doesn't hate all of them in some way. Since we have a strict no-dependencies policy for Mercurial, we either need to use whatever comes with Python, vendor a library, or implement a custom format ourselves. Python stdlib means using JSON, which doesn't support comments and isn't great for humans, or `configparser` which is an obscure, untyped format that nobody uses and doesn't have a commonplace Rust parser. Implementing a custom format is error-prone, tedious and subject to the same issues as picking an existing format. Vendoring opens us to the vast array of common config formats. The ones being picked for most modern software are YAML and TOML. YAML is older and common in the Python community, but TOML is much simpler and less error-prone. I would much rather be responsible for the <1000 lines of `tomli`, on top of TOML being the choice of the Rust community, with robust crates for reading it. The structure of `configitems.toml` is explained inline.
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 tip