Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Mar 2022 17:39:06 +0100] rev 48972
rhg: add support for ignoring all extensions
Some workflows just want what `rhg` does and don't care about any extensions,
this makes it easier.
Differential Revision: https://phab.mercurial-scm.org/D12385
Raphaël Gomès <rgomes@octobus.net> [Thu, 17 Mar 2022 12:27:40 +0100] rev 48971
branching: merge stable into default
Julien Cristau <jcristau@debian.org> [Tue, 15 Mar 2022 10:36:28 +0100] rev 48970
revlog: fix index_fast_rank (wip)
As far as I can tell, rank is stored as a 32-bit big endian value, I'm
not sure how grabbing the first byte can possibly work. I assume
there's no test coverage here?
cc @pacien
Fixes: https://www.mercurial-scm.org/repo/hg/rev/
e633e660158f
Differential Revision: https://phab.mercurial-scm.org/D12376
pacien <pacien.trangirard@pacien.net> [Thu, 17 Mar 2022 11:00:05 +0100] rev 48969
tests: fix glob pattern for dynamic timer alignment
The number of space characters varies depending on the number of digits of the
timer, making some tests fail on slow machines in an unintended way:
```diff
--- /build/mercurial-6.1/tests/test-merge-halt.t
+++ /build/mercurial-6.1/tests/test-merge-halt.t.err
@@ -210,6 +210,6 @@
merge halted after failed merge (see hg resolve)
[240]
$ hg shelve --list
- default (* ago) changes to: foo (glob)
+ default (11s ago) changes to: foo
$ hg unshelve --abort
unshelve of 'default' aborted
ERROR: test-merge-halt.t output changed
```
Differential Revision: https://phab.mercurial-scm.org/D12381
Julien Cristau <jcristau@debian.org> [Tue, 15 Mar 2022 14:45:47 +0100] rev 48968
test: update test-clone-stream.t to pass on bigendian
Fixes:
a3cf460a6b1b ("stream-clone: also filter the requirement we put in the bundle 2")
Differential Revision: https://phab.mercurial-scm.org/D12377
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Mar 2022 13:31:39 -0700] rev 48967
filemerge: when merge tool uses $output, don't leave markers in $local
As explained in the previous patch, we incorrectly leave conflict
markers in both `$local` and `$output` since D12190. I don't
understand why it broke but the fix is simple and clear after all the
recent refactoring.
Differential Revision: https://phab.mercurial-scm.org/D12379
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Mar 2022 13:40:45 -0700] rev 48966
tests: demonstrate how conflict markers end up $local *and* $output
When a merge tool is configured to keep conflict markers, they are
supposed to be written to `$local` if `$output` is not mentioned in
the tool's `merge-tools.<tool>.args` config, and in `$output` if it is
mentioned. However, I broke the latter case in D12190.
Differential Revision: https://phab.mercurial-scm.org/D12378
Raphaël Gomès <rgomes@octobus.net> [Tue, 15 Mar 2022 09:26:26 +0100] rev 48965
branching: merge stable into default
Julien Cristau <jcristau@debian.org> [Mon, 14 Mar 2022 17:57:03 +0100] rev 48964
revlog: fix wrong type of rank_unknown variable
We treat "rank" as an int everywhere, but declare rank_unknown as a
char. On architectures where char is signed, that works out ok, but
when char is unsigned, rank_unknown is 255 instead of -1.
Differential Revision: https://phab.mercurial-scm.org/D12374
Kyle Lippincott <spectral@google.com> [Mon, 14 Mar 2022 12:24:34 -0700] rev 48963
tests: fix formatting issue in run-tests.py after
c194e93d1ebc
Differential Revision: https://phab.mercurial-scm.org/D12375
Luke Granger-Brown <hg@lukegb.com> [Mon, 14 Mar 2022 14:10:41 +0000] rev 48962
rust-hg-core: use correct type for libc hostname buffer
The type of libc::c_char is u8 on aarch64 rather than i8, which causes
the use of a specifically-typed constant to fail.
Differential Revision: https://phab.mercurial-scm.org/D12373
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 09 Mar 2022 15:41:39 -0800] rev 48961
import-checker: allow symbol imports from typing module
As we add typing annotations, we'll want to use a lot of symbols from
the `typing` module. Typing `typing` all the time will be annoying. Let's
allow symbol imports from this module.
While I was here, I changed some comments from "whitelist" to "allow list"
as the former is non-inclusive terminology.
Differential Revision: https://phab.mercurial-scm.org/D12365
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:11:03 -0800] rev 48960
pycompat: remove json.loads polyfill for Python 3.5
We no longer support Python 3.5 so this can be deleted.
Differential Revision: https://phab.mercurial-scm.org/D12364
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:10:19 -0800] rev 48959
pycompat: remove check for Python >= 3.6
We dropped support for Python 3.5 so this is always true.
Differential Revision: https://phab.mercurial-scm.org/D12363
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:09:35 -0800] rev 48958
hgdemandimport: delete check for Python 3.5
We dropped support for Python 3.5. So we no longer need to do this.
Differential Revision: https://phab.mercurial-scm.org/D12362
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:08:35 -0800] rev 48957
hg: always import hgdemandimport
The deleted if condition is always true now that we dropped Python 2
and 3.5.
Differential Revision: https://phab.mercurial-scm.org/D12361
Kyle Lippincott <spectral@google.com> [Wed, 09 Mar 2022 21:26:58 -0800] rev 48956
tests: support another error case when detecting ipv4/ipv6 support
I encountered this on Linux in a VM environment with a rather strange networking
setup (both on the host and in the VM).
Differential Revision: https://phab.mercurial-scm.org/D12371
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 09 Mar 2022 16:44:48 +0100] rev 48955
debugdiscovery: fix a typo in the help
Differential Revision: https://phab.mercurial-scm.org/D12372
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:28:51 +0100] rev 48954
rust-hg-cypython: upgrade dependencies
This upgrades all dependencies to their latest version. This is routinely done
to keep-up.
Differential Revision: https://phab.mercurial-scm.org/D12359
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:22:22 +0100] rev 48953
rust-hg-core: upgrade dependencies
This upgrades all dependencies to their latest version, except `clap` and `zstd`
whose latest versions do not support our minimum supported Rust version 1.48.0.
Same as for `rhg`, it contains security fix for `regex` which does not affect
us too much, but doesn't hurt, and the rest of the upgrades are there simply
to keep up.
Differential Revision: https://phab.mercurial-scm.org/D12358
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:17:09 +0100] rev 48952
rhg: upgrade dependencies
This upgrades all dependencies to their latest version, except `clap`, which
is upgraded to the last 2.x series version, since 3.x does not support our
minimum supported Rust version of 1.48.0.
This contains a security fix for `regex` which does not affect us too much, but
doesn't hurt, and the rest of the upgrades are there simply to keep up.
Differential Revision: https://phab.mercurial-scm.org/D12357
Yuya Nishihara <yuya@tcha.org> [Fri, 04 Mar 2022 10:28:46 +0900] rev 48951
chgserver: remove Python 2 file descriptor logic
Follows up
0bb28b7736bc "chgserver: remove Python 2 support code."
On Python 2, we had to close newfp prior to restoring the original file
description since "delete newfp" would otherwise close the file descriptor
shared with the long-lived fp:
in attachio():
newfp = os.fdopen(fp.fileno(), mode, bufsize)
in _restoreio():
newfp.close() # temporarily close newfp.fileno() (= fp.fileno())
os.dup2(fd, fp.fileno()) # reopen fp.fileno() with original fd
On the other hand, we shouldn't call newfp.close() on Python 3 since
any function calls are proxied to the underlying file object by
procutil.LineBufferedWrapper.
Simon Sapin <simon.sapin@octobus.net> [Tue, 08 Feb 2022 15:51:52 +0100] rev 48950
dirstate-tree: optimize HashMap lookups with raw_entry_mut
This switches to using `HashMap` from the hashbrown crate,
in order to use its `raw_entry_mut` method.
The standard library’s `HashMap` is also based on this same crate,
but `raw_entry_mut` is not yet stable there:
https://github.com/rust-lang/rust/issues/56167
Using version 0.9 because 0.10 is yanked and 0.11 requires Rust 1.49
This replaces in `DirstateMap::get_or_insert_node` a call to
`HashMap<K, V>::entry` with `K = WithBasename<Cow<'on_disk, HgPath>>`.
`entry` takes and consumes an "owned" `key: K` parameter, in case a new entry
ends up inserted. This key is converted by `to_cow` from a value that borrows
the `'path` lifetime.
When this function is called by `Dirstate::new_v1`, `'path` is in fact
the same as `'on_disk` so `to_cow` can return an owned key that contains
`Cow::Borrowed`.
For other callers, `to_cow` needs to create a `Cow::Owned` and thus make
a costly heap memory allocation. This is wasteful if this key was already
present in the map. Even when inserting a new node this is typically the case
for its ancestor nodes (assuming most directories have numerous descendants).
Differential Revision: https://phab.mercurial-scm.org/D12317
Raphaël Gomès <rgomes@octobus.net> [Fri, 04 Mar 2022 13:33:55 +0100] rev 48949
heptapod-ci: remove useless mentions of Python 3
Now that we don't have Python 2 jobs, we can go with shorter names.
Differential Revision: https://phab.mercurial-scm.org/D12354