branching: merge stable into default
authorPierre-Yves David <pierre-yves.david@octobus.net>
Thu, 01 Aug 2024 16:42:38 +0200
changeset 51755 9b8c71d0b785
parent 51750 c87c56ad6913 (current diff)
parent 51754 a431b41299fc (diff)
child 51756 a53162bd73ed
branching: merge stable into default Post 6.8.1 release.
setup.py
--- a/.hgsigs	Tue Jun 27 13:05:03 2023 +0200
+++ b/.hgsigs	Thu Aug 01 16:42:38 2024 +0200
@@ -264,3 +264,4 @@
 a1a011d4b148955975cb40d619d285fdd4ee8713 0 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
+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
--- a/.hgtags	Tue Jun 27 13:05:03 2023 +0200
+++ b/.hgtags	Thu Aug 01 16:42:38 2024 +0200
@@ -280,3 +280,4 @@
 a1a011d4b148955975cb40d619d285fdd4ee8713 6.7.4
 6454c117c6a4003f07d8f4281dd90038955123e4 6.8rc0
 11f41248595b6dd7e0fbb434ecbf75c418785a4c 6.8
+11a9e2fc0caf0800625612e374139e4d825349a6 6.8.1
--- a/contrib/packaging/debian/copyright	Tue Jun 27 13:05:03 2023 +0200
+++ b/contrib/packaging/debian/copyright	Thu Aug 01 16:42:38 2024 +0200
@@ -3,7 +3,7 @@
 Source: https://www.mercurial-scm.org/
 
 Files: *
-Copyright: 2005-2023, Olivia Mackall <olivia@selenic.com> and others.
+Copyright: 2005-2024, Olivia Mackall <olivia@selenic.com> and others.
 License: GPL-2+
  This program is free software; you can redistribute it
  and/or modify it under the terms of the GNU General Public
--- a/contrib/packaging/inno/mercurial.iss	Tue Jun 27 13:05:03 2023 +0200
+++ b/contrib/packaging/inno/mercurial.iss	Thu Aug 01 16:42:38 2024 +0200
@@ -6,7 +6,7 @@
 #endif
 
 [Setup]
-AppCopyright=Copyright 2005-2023 Olivia Mackall and others
+AppCopyright=Copyright 2005-2024 Olivia Mackall and others
 AppName=Mercurial
 AppVersion={#VERSION}
 OutputBaseFilename=Mercurial-{#VERSION}{#SUFFIX}
@@ -29,7 +29,7 @@
 DefaultDirName={pf}\Mercurial
 SourceDir=stage
 VersionInfoDescription=Mercurial distributed SCM (version {#VERSION})
-VersionInfoCopyright=Copyright 2005-2023 Olivia Mackall and others
+VersionInfoCopyright=Copyright 2005-2024 Olivia Mackall and others
 VersionInfoCompany=Olivia Mackall and others
 VersionInfoVersion={#QUAD_VERSION}
 InternalCompressLevel=max
--- a/contrib/win32/ReadMe.html	Tue Jun 27 13:05:03 2023 +0200
+++ b/contrib/win32/ReadMe.html	Thu Aug 01 16:42:38 2024 +0200
@@ -140,7 +140,7 @@
     </p>
 
     <p>
-      Mercurial is Copyright 2005-2023 Olivia Mackall and others.
+      Mercurial is Copyright 2005-2024 Olivia Mackall and others.
     </p>
 
     <p>
--- a/hgdemandimport/__init__.py	Tue Jun 27 13:05:03 2023 +0200
+++ b/hgdemandimport/__init__.py	Thu Aug 01 16:42:38 2024 +0200
@@ -58,6 +58,10 @@
     # setuptools uses this hack to inject it's own distutils at import time
     'setuptools',
     '_distutils_hack.override',
+    # threading is locally imported by importlib.util.LazyLoader.exec_module
+    '_weakrefset',
+    'warnings',
+    'threading',
 }
 
 _pypy = '__pypy__' in sys.builtin_module_names
--- a/hgext/win32mbcs.py	Tue Jun 27 13:05:03 2023 +0200
+++ b/hgext/win32mbcs.py	Thu Aug 01 16:42:38 2024 +0200
@@ -73,7 +73,7 @@
     default=lambda: encoding.encoding,
 )
 
-_encoding = None  # see extsetup
+_encoding: str = ""  # see extsetup
 
 
 def decode(arg):
@@ -129,7 +129,7 @@
     except UnicodeError:
         raise error.Abort(
             _(b"[win32mbcs] filename conversion failed with %s encoding\n")
-            % _encoding
+            % encoding.strtolocal(_encoding)
         )
 
 
@@ -199,7 +199,7 @@
         return
     # determine encoding for filename
     global _encoding
-    _encoding = ui.config(b'win32mbcs', b'encoding')
+    _encoding = encoding.strfromlocal(ui.config(b'win32mbcs', b'encoding'))
     # fake is only for relevant environment.
     if _encoding.lower() in problematic_encodings.split():
         for f in funcs.split():
@@ -217,5 +217,6 @@
         # extensions.loadall() is called.
         if '--debug' in sys.argv:
             ui.writenoi18n(
-                b"[win32mbcs] activated with encoding: %s\n" % _encoding
+                b"[win32mbcs] activated with encoding: %s\n"
+                % encoding.strtolocal(_encoding)
             )
--- a/mercurial/commands.py	Tue Jun 27 13:05:03 2023 +0200
+++ b/mercurial/commands.py	Thu Aug 01 16:42:38 2024 +0200
@@ -7987,7 +7987,7 @@
     )
     license = _(
         b"(see https://mercurial-scm.org for more information)\n"
-        b"\nCopyright (C) 2005-2023 Olivia Mackall and others\n"
+        b"\nCopyright (C) 2005-2024 Olivia Mackall and others\n"
         b"This is free software; see the source for copying conditions. "
         b"There is NO\nwarranty; "
         b"not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
--- a/mercurial/helptext/hg.1.txt	Tue Jun 27 13:05:03 2023 +0200
+++ b/mercurial/helptext/hg.1.txt	Thu Aug 01 16:42:38 2024 +0200
@@ -112,7 +112,7 @@
 
 Copying
 """""""
-Copyright (C) 2005-2023 Olivia Mackall.
+Copyright (C) 2005-2024 Olivia Mackall.
 Free use of this software is granted under the terms of the GNU General
 Public License version 2 or any later version.
 
--- a/mercurial/helptext/hgignore.5.txt	Tue Jun 27 13:05:03 2023 +0200
+++ b/mercurial/helptext/hgignore.5.txt	Thu Aug 01 16:42:38 2024 +0200
@@ -26,7 +26,7 @@
 Copying
 =======
 This manual page is copyright 2006 Vadim Gelfer.
-Mercurial is copyright 2005-2023 Olivia Mackall.
+Mercurial is copyright 2005-2024 Olivia Mackall.
 Free use of this software is granted under the terms of the GNU General
 Public License version 2 or any later version.
 
--- a/mercurial/helptext/hgrc.5.txt	Tue Jun 27 13:05:03 2023 +0200
+++ b/mercurial/helptext/hgrc.5.txt	Thu Aug 01 16:42:38 2024 +0200
@@ -34,7 +34,7 @@
 Copying
 =======
 This manual page is copyright 2005 Bryan O'Sullivan.
-Mercurial is copyright 2005-2023 Olivia Mackall.
+Mercurial is copyright 2005-2024 Olivia Mackall.
 Free use of this software is granted under the terms of the GNU General
 Public License version 2 or any later version.
 
--- a/relnotes/6.8	Tue Jun 27 13:05:03 2023 +0200
+++ b/relnotes/6.8	Thu Aug 01 16:42:38 2024 +0200
@@ -1,3 +1,10 @@
+= Mercurial 6.8.1 =
+
+ * Python 3.12: fix an issue between `threading` and `demandimport`
+ * rhg: expand user and environment variable in paths to ignore in config and
+   includes
+ * `win32mbcs` extension: fix an encoding issue
+
 = Mercurial 6.8 =
 
 As usual, a *lot* of patches don't make it to this list.
--- a/rust/Cargo.lock	Tue Jun 27 13:05:03 2023 +0200
+++ b/rust/Cargo.lock	Thu Aug 01 16:42:38 2024 +0200
@@ -67,6 +67,12 @@
 checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
 name = "bitmaps"
 version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -106,6 +112,17 @@
 ]
 
 [[package]]
+name = "bstr"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
 name = "bumpalo"
 version = "3.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -163,7 +180,7 @@
  "js-sys",
  "num-traits",
  "wasm-bindgen",
- "windows-targets",
+ "windows-targets 0.52.0",
 ]
 
 [[package]]
@@ -173,7 +190,7 @@
 checksum = "60494cedb60cb47462c0ff7be53de32c0e42a6fc2c772184554fa12bd9489c03"
 dependencies = [
  "atty",
- "bitflags",
+ "bitflags 1.3.2",
  "clap_derive",
  "clap_lex",
  "once_cell",
@@ -401,6 +418,27 @@
 ]
 
 [[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys",
+]
+
+[[package]]
 name = "either"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -538,7 +576,7 @@
 name = "hg-core"
 version = "0.1.0"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "bitvec",
  "byteorder",
  "bytes-cast",
@@ -707,6 +745,16 @@
 checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
 
 [[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.6.0",
+ "libc",
+]
+
+[[package]]
 name = "libz-sys"
 version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -833,10 +881,19 @@
 checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
 
 [[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
 name = "os_str_bytes"
 version = "6.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7b5bf27447411e9ee3ff51186bf7a08e16c341efdde93f4d823e8844429bed7e"
+dependencies = [
+ "memchr",
+]
 
 [[package]]
 name = "output_vt100"
@@ -1062,7 +1119,18 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+dependencies = [
+ "getrandom 0.2.8",
+ "libredox",
+ "thiserror",
 ]
 
 [[package]]
@@ -1077,6 +1145,12 @@
 ]
 
 [[package]]
+name = "regex-automata"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
+
+[[package]]
 name = "regex-syntax"
 version = "0.6.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1108,6 +1182,7 @@
  "logging_timer",
  "rayon",
  "regex",
+ "shellexpand",
  "which",
  "whoami",
 ]
@@ -1208,6 +1283,17 @@
 ]
 
 [[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "bstr",
+ "dirs",
+ "os_str_bytes",
+]
+
+[[package]]
 name = "sized-chunks"
 version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1276,6 +1362,26 @@
 ]
 
 [[package]]
+name = "thiserror"
+version = "1.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
 name = "thread_local"
 version = "1.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1499,58 +1605,124 @@
 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
 
 [[package]]
 name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
 
 [[package]]
 name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
 
 [[package]]
 name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
 
 [[package]]
 name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
 
 [[package]]
 name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
--- a/rust/hgcli/README.md	Tue Jun 27 13:05:03 2023 +0200
+++ b/rust/hgcli/README.md	Thu Aug 01 16:42:38 2024 +0200
@@ -30,7 +30,7 @@
     Mercurial Distributed SCM (version 5.3.1+433-f99cd77d53dc+20200331)
     (see https://mercurial-scm.org for more information)
 
-    Copyright (C) 2005-2020 Olivia Mackall and others
+    Copyright (C) 2005-2024 Olivia Mackall and others
     This is free software; see the source for copying conditions. There is NO
     warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
--- a/rust/rhg/Cargo.toml	Tue Jun 27 13:05:03 2023 +0200
+++ b/rust/rhg/Cargo.toml	Thu Aug 01 16:42:38 2024 +0200
@@ -20,6 +20,7 @@
 regex = "1.7.0"
 env_logger = "0.9.3"
 format-bytes = "0.3.0"
+shellexpand = { version = "3.1", features = ["full"]}
 whoami = "1.4"
 which = "4.3.0"
 rayon = "1.7.0"
--- a/rust/rhg/src/commands/status.rs	Tue Jun 27 13:05:03 2023 +0200
+++ b/rust/rhg/src/commands/status.rs	Thu Aug 01 16:42:38 2024 +0200
@@ -632,9 +632,11 @@
     for (key, value) in config.iter_section(b"ui") {
         if key == b"ignore" || key.starts_with(b"ignore.") {
             let path = get_path_from_bytes(value);
-            // TODO: expand "~/" and environment variable here, like Python
-            // does with `os.path.expanduser` and `os.path.expandvars`
-
+            let path = shellexpand::path::full_with_context_no_errors(
+                path,
+                home::home_dir,
+                |s| std::env::var(s).ok(),
+            );
             let joined = repo.working_directory_path().join(path);
             ignore_files.push(joined);
         }
--- a/setup.py	Tue Jun 27 13:05:03 2023 +0200
+++ b/setup.py	Thu Aug 01 16:42:38 2024 +0200
@@ -1739,7 +1739,7 @@
     extra['console'] = [
         {
             'script': 'hg',
-            'copyright': 'Copyright (C) 2005-2023 Olivia Mackall and others',
+            'copyright': 'Copyright (C) 2005-2024 Olivia Mackall and others',
             'product_version': version,
         }
     ]
--- a/tests/test-rhg.t	Tue Jun 27 13:05:03 2023 +0200
+++ b/tests/test-rhg.t	Thu Aug 01 16:42:38 2024 +0200
@@ -412,6 +412,14 @@
   $ rhg files
   a
 
+Check that we expand both user and environment in ignore includes (HOME is TESTTMP)
+
+  $ echo "specificprefix" > ~/ignore.expected-extension
+  $ touch specificprefix
+  $ $NO_FALLBACK rhg st
+  ? specificprefix
+  $ $NO_FALLBACK RHG_EXT_TEST=expected-extension rhg st --config 'ui.ignore=~/ignore.${RHG_EXT_TEST}'
+
 We can ignore all extensions at once
 
   $ echo "[extensions]" >> $HGRCPATH