changeset 53023:b12a4b9d09ce

branching: correct merge of stable into default For unclear reason, b7afc38468bd dropped all the change to "contrib/heptapod-ci.yml". This is the same merge as b7afc38468bd, but merging heptapod-ci.yml change from stable too.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 28 Feb 2025 23:18:22 +0100
parents bbbb12632607 (current diff) 9cf807501e27 (diff)
children 877c20982972
files contrib/heptapod-ci.yml mercurial/commands.py mercurial/scmutil.py mercurial/ui.py setup.py
diffstat 20 files changed, 88 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsigs	Mon Dec 09 06:23:34 2024 +0100
+++ b/.hgsigs	Fri Feb 28 23:18:22 2025 +0100
@@ -269,3 +269,4 @@
 dc97e8670decc9925c2f570bdca636778184b199 0 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
+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
--- a/.hgtags	Mon Dec 09 06:23:34 2024 +0100
+++ b/.hgtags	Fri Feb 28 23:18:22 2025 +0100
@@ -285,3 +285,4 @@
 dc97e8670decc9925c2f570bdca636778184b199 6.9rc0
 31d45a1cbc479ac73fc8b355abe99e090eb6c747 6.9rc1
 b267c5764cc6b804c619a42067405f27e8705beb 6.9
+9751b9ccd74d8386687f88fbdfe280877840ec7d 6.9.1
--- a/contrib/heptapod-ci.yml	Mon Dec 09 06:23:34 2024 +0100
+++ b/contrib/heptapod-ci.yml	Fri Feb 28 23:18:22 2025 +0100
@@ -8,7 +8,7 @@
 # has succeeded.
 workflow:
   rules:
-    - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ && $CI_PIPELINE_SOURCE !~ "/web|schedule/"
+    - if: ($CI_COMMIT_BRANCH =~ /^branch\/.*/ || $CI_COMMIT_TAG) && $CI_PIPELINE_SOURCE !~ "/web|schedule/"
       when: never
     - if: $CI_PIPELINE_SOURCE == "merge_request_event"
       when: never
@@ -85,9 +85,9 @@
   extends: .trigger
   stage: nightly-trigger
   rules:
-    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH && $CI_PIPELINE_SOURCE == "schedule"
+    - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)  && $CI_PIPELINE_SOURCE == "schedule"
       when: always
-    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+    - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
       when: manual
       allow_failure: true
     - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
@@ -135,7 +135,7 @@
   extends: .trigger
   stage: build
   rules:
-  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+  - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
     when: never
   - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
     when: manual
@@ -144,7 +144,7 @@
 .extra-c-wheel:
   extends: build-c-wheel
   rules:
-  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+  - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
     needs:
       - trigger-nightly-build
   - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
@@ -317,7 +317,7 @@
   extends: .trigger
   stage: py-version-compat
   rules:
-  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+  - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
     when: on_success
     needs:
       - trigger-nightly-build
@@ -420,7 +420,7 @@
   extends: .trigger
   stage: build
   rules:
-  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+  - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
     when: never
   - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
     when: manual
@@ -433,7 +433,7 @@
     when: on_success
     needs:
     rules:
-    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+    - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
       needs:
         - trigger-nightly-build
     - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
@@ -560,7 +560,7 @@
 # multiple jobs. (all this might be unnecessary)
 build-c-wheel-macos:
     rules:
-    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
+    - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
       needs:
         - trigger-nightly-build
     - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
@@ -590,7 +590,7 @@
   extends: .all
   stage: upload
   rules:
-    - if: '$CI_COMMIT_BRANCH =~ $RE_BRANCH'
+    - if: ($CI_COMMIT_BRANCH =~ $RE_BRANCH || $CI_COMMIT_TAG)
       # note that at the time of writing this, this job depends on multiple
       # manual one. So it will not run by default, but will automatically run
       # if the manual jobs are triggered.
--- a/contrib/packaging/debian/copyright	Mon Dec 09 06:23:34 2024 +0100
+++ b/contrib/packaging/debian/copyright	Fri Feb 28 23:18:22 2025 +0100
@@ -3,7 +3,7 @@
 Source: https://www.mercurial-scm.org/
 
 Files: *
-Copyright: 2005-2024, Olivia Mackall <olivia@selenic.com> and others.
+Copyright: 2005-2025, 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	Mon Dec 09 06:23:34 2024 +0100
+++ b/contrib/packaging/inno/mercurial.iss	Fri Feb 28 23:18:22 2025 +0100
@@ -6,7 +6,7 @@
 #endif
 
 [Setup]
-AppCopyright=Copyright 2005-2024 Olivia Mackall and others
+AppCopyright=Copyright 2005-2025 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-2024 Olivia Mackall and others
+VersionInfoCopyright=Copyright 2005-2025 Olivia Mackall and others
 VersionInfoCompany=Olivia Mackall and others
 VersionInfoVersion={#QUAD_VERSION}
 InternalCompressLevel=max
Binary file contrib/packaging/wix/COPYING.rtf has changed
--- a/contrib/win32/ReadMe.html	Mon Dec 09 06:23:34 2024 +0100
+++ b/contrib/win32/ReadMe.html	Fri Feb 28 23:18:22 2025 +0100
@@ -140,7 +140,7 @@
     </p>
 
     <p>
-      Mercurial is Copyright 2005-2024 Olivia Mackall and others.
+      Mercurial is Copyright 2005-2025 Olivia Mackall and others.
     </p>
 
     <p>
--- a/hgext/acl.py	Mon Dec 09 06:23:34 2024 +0100
+++ b/hgext/acl.py	Fri Feb 28 23:18:22 2025 +0100
@@ -59,6 +59,7 @@
 
 Bookmark-based Access Control
 -----------------------------
+
 Use the ``acl.deny.bookmarks`` and ``acl.allow.bookmarks`` sections to
 have bookmark-based access control. Keys in these sections can be
 either:
--- a/mercurial/color.py	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/color.py	Fri Feb 28 23:18:22 2025 +0100
@@ -386,6 +386,9 @@
         ]
         start = b'\033[' + b';'.join(start) + b'm'
         stop = b'\033[' + pycompat.bytestr(activeeffects[b'none']) + b'm'
+        if ui._readlineprompt:
+            start = b'\001' + start + b'\001'
+            stop = b'\002' + stop + b'\002'
     return _mergeeffects(text, start, stop)
 
 
@@ -518,7 +521,8 @@
         else:
             origattr = csbi.wAttributes
             ansire = re.compile(
-                br'\033\[([^m]*)m([^\033]*)(.*)', re.MULTILINE | re.DOTALL
+                br'\001?\033\[([^m]*)m\002?([^\033]*)(.*)',
+                re.MULTILINE | re.DOTALL,
             )
 
     def win32print(ui, writefunc, text, **opts):
--- a/mercurial/commands.py	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/commands.py	Fri Feb 28 23:18:22 2025 +0100
@@ -7640,7 +7640,7 @@
     )
     license = _(
         b"(see https://mercurial-scm.org for more information)\n"
-        b"\nCopyright (C) 2005-2024 Olivia Mackall and others\n"
+        b"\nCopyright (C) 2005-2025 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	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/helptext/hg.1.txt	Fri Feb 28 23:18:22 2025 +0100
@@ -112,7 +112,7 @@
 
 Copying
 """""""
-Copyright (C) 2005-2024 Olivia Mackall.
+Copyright (C) 2005-2025 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	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/helptext/hgignore.5.txt	Fri Feb 28 23:18:22 2025 +0100
@@ -26,7 +26,7 @@
 Copying
 =======
 This manual page is copyright 2006 Vadim Gelfer.
-Mercurial is copyright 2005-2024 Olivia Mackall.
+Mercurial is copyright 2005-2025 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	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/helptext/hgrc.5.txt	Fri Feb 28 23:18:22 2025 +0100
@@ -34,7 +34,7 @@
 Copying
 =======
 This manual page is copyright 2005 Bryan O'Sullivan.
-Mercurial is copyright 2005-2024 Olivia Mackall.
+Mercurial is copyright 2005-2025 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/rust.txt	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/helptext/rust.txt	Fri Feb 28 23:18:22 2025 +0100
@@ -67,21 +67,16 @@
 Using pip
 ---------
 
-Users of `pip` can install the Rust extensions with the following command::
-
-  $ pip install mercurial \
-        --global-option \
-        --rust \
-        --no-use-pep517 \
-        --no-binary mercurial
+Users of `pip` can install the Rust extensions with the following commands::
 
-`--no-use-pep517` is here to tell `pip` to preserve backwards compatibility with
-the legacy `setup.py` system. Mercurial has not yet migrated its complex setup
-to the new system, so we still need this to add compiled extensions.
+  $ pip cache remove mercurial
+  $ pip install mercurial -v \
+        --config-settings --global-option=--rust \
+        --no-binary mercurial --force
 
-`--no-binary` is there to tell pip to not use the pre-compiled wheels that are
-missing rust support. This might take a couple of minutes because you're
-compiling everything.
+`pip cache remove` and `--no-binary` are there to tell pip to not use the
+pre-compiled wheels that are missing rust support. This might take a couple
+of minutes because you're compiling everything.
 
 See the "Checking for Rust" section to see if the install succeeded.
 
--- a/mercurial/scmutil.py	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/scmutil.py	Fri Feb 28 23:18:22 2025 +0100
@@ -2498,10 +2498,8 @@
 RESOURCE_HIGH: int = 3
 RESOURCE_MEDIUM: int = 2
 RESOURCE_LOW: int = 1
-RESOURCE_DEFAULT: int = 0
 
 RESOURCE_MAPPING: Dict[bytes, int] = {
-    b'default': RESOURCE_DEFAULT,
     b'low': RESOURCE_LOW,
     b'medium': RESOURCE_MEDIUM,
     b'high': RESOURCE_HIGH,
@@ -2516,13 +2514,16 @@
     """return the resource profile for a dimension
 
     If no dimension is specified, the generic value is returned"""
-    generic_name = ui.config(b'usage', b'resources')
-    value = RESOURCE_MAPPING.get(generic_name, RESOURCE_DEFAULT)
-    if value == RESOURCE_DEFAULT:
-        value = DEFAULT_RESOURCE
+
+    def config(section, name):
+        value_name = ui.config(section, name, default=b'default')
+        return RESOURCE_MAPPING.get(value_name)
+
     if dimension is not None:
-        sub_name = ui.config(b'usage', b'resources.%s' % dimension)
-        sub_value = RESOURCE_MAPPING.get(sub_name, RESOURCE_DEFAULT)
-        if sub_value != RESOURCE_DEFAULT:
-            value = sub_value
-    return value
+        value = config(b'usage', b'resources.%s' % dimension)
+        if value is not None:
+            return value
+    value = config(b'usage', b'resources')
+    if value is not None:
+        return value
+    return DEFAULT_RESOURCE
--- a/mercurial/ui.py	Mon Dec 09 06:23:34 2024 +0100
+++ b/mercurial/ui.py	Fri Feb 28 23:18:22 2025 +0100
@@ -262,6 +262,8 @@
         self.logblockedtimes = False
         # color mode: see mercurial/color.py for possible value
         self._colormode = None
+        # readline prompt: is this currently for a readline prompt?
+        self._readlineprompt = False
         self._terminfoparams = {}
         self._styles = {}
         self._uninterruptible = False
@@ -1741,7 +1743,12 @@
             self.flush()
             prompt = b' '
         else:
-            prompt = self.label(prompt, b'ui.prompt') + b' '
+            wasreadlineprompt = self._readlineprompt
+            try:
+                self._readlineprompt = True
+                prompt = self.label(prompt, b'ui.prompt') + b' '
+            finally:
+                self._readlineprompt = wasreadlineprompt
 
         # prompt ' ' must exist; otherwise readline may delete entire line
         # - http://bugs.python.org/issue12833
--- a/relnotes/6.9	Mon Dec 09 06:23:34 2024 +0100
+++ b/relnotes/6.9	Fri Feb 28 23:18:22 2025 +0100
@@ -1,3 +1,21 @@
+= Mercurial 6.9.1 =
+
+ * ci: disable caching of the wheels that get built to save space
+ * tests: use `--no-cache-dir` with `pip`
+ * run-tests: disable caching of the wheels when installing test Mercurial
+ * manifest: delay import of `typing.ByteString` for py 3.14 support (issue6940)
+ * contrib: propagate `pytype` failures outside of `check-pytype.sh`
+ * acl: fix confusing formatting in help text (issue6942)
+ * ui: fix escape sequences in in readline prompts (issue6930)
+ * ci: let branch job run for scheduled build too
+ * ci: automatically starts platform and py-version test for scheduled build
+ * help: fix command build with rust
+ * copyright: update to 2025
+ * ci: also let the nightly build run on tags
+ * usage: refactor usage.resources config parsing
+ * hg-core: fix usage.resources typo
+ * hg-core: fix usage.resources default logic
+
 = Mercurial 6.9 =
 
 == Backwards Compatibility Changes ==
--- a/rust/hg-core/src/config/mod.rs	Mon Dec 09 06:23:34 2024 +0100
+++ b/rust/hg-core/src/config/mod.rs	Fri Feb 28 23:18:22 2025 +0100
@@ -816,19 +816,16 @@
         &self,
         dimension: Option<&str>,
     ) -> ResourceProfile {
-        let mut value = self.resource_profile_from_item(b"usage", b"resource");
-        if let Some(dimension) = &dimension {
-            let sub_value = self.resource_profile_from_item(
+        let value = self.resource_profile_from_item(b"usage", b"resources");
+        let sub_value = dimension.and_then(|dimension| {
+            self.resource_profile_from_item(
                 b"usage",
                 format!("resources.{}", dimension).as_bytes(),
-            );
-            if sub_value != ResourceProfileValue::Default {
-                value = sub_value
-            }
-        }
+            )
+        });
         ResourceProfile {
             dimension: dimension.map(ToOwned::to_owned),
-            value,
+            value: sub_value.or(value).unwrap_or_default(),
         }
     }
 
@@ -836,13 +833,12 @@
         &self,
         section: &[u8],
         item: &[u8],
-    ) -> ResourceProfileValue {
-        match self.get(section, item).unwrap_or(b"default") {
-            b"default" => ResourceProfileValue::Default,
-            b"low" => ResourceProfileValue::Low,
-            b"medium" => ResourceProfileValue::Medium,
-            b"high" => ResourceProfileValue::High,
-            _ => ResourceProfileValue::Default,
+    ) -> Option<ResourceProfileValue> {
+        match self.get(section, item)? {
+            b"low" => Some(ResourceProfileValue::Low),
+            b"medium" => Some(ResourceProfileValue::Medium),
+            b"high" => Some(ResourceProfileValue::High),
+            _ => None,
         }
     }
 }
@@ -856,10 +852,10 @@
     pub value: ResourceProfileValue,
 }
 
-#[derive(Debug, Eq, PartialEq, PartialOrd, Ord)]
+#[derive(Debug, Eq, PartialEq, PartialOrd, Ord, Default)]
 pub enum ResourceProfileValue {
-    Default,
     Low,
+    #[default]
     Medium,
     High,
 }
--- a/rust/hgcli/README.md	Mon Dec 09 06:23:34 2024 +0100
+++ b/rust/hgcli/README.md	Fri Feb 28 23:18:22 2025 +0100
@@ -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-2024 Olivia Mackall and others
+    Copyright (C) 2005-2025 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/setup.py	Mon Dec 09 06:23:34 2024 +0100
+++ b/setup.py	Fri Feb 28 23:18:22 2025 +0100
@@ -1760,7 +1760,7 @@
     extra['console'] = [
         {
             'script': 'hg',
-            'copyright': 'Copyright (C) 2005-2024 Olivia Mackall and others',
+            'copyright': 'Copyright (C) 2005-2025 Olivia Mackall and others',
             'product_version': version,
         }
     ]