# HG changeset patch
# User Antonio Muci <
a....@inwind.it>
# Date 1777674769 -7200
# Sat May 02 00:32:49 2026 +0200
# Branch stable
# Node ID 5592126afcb4b230c415838b7e1af7adafaca505
# Parent 6c0e690e3bb3d6e248612bde4cead6f4297364f4
hg72: fix find_cmd being moved to main_script in hg >= 7.2
The previous commit fixed the first TortoiseHg startup error. This commit fixes
the one that pops out immediately after that.
Incompatibility introduced on 2025-08-06 in mercurial changeset
d32b62bf63c8614b2d88796c9e5feeda25fa3fdc ("cycle-breaking: extract command
finding logic in its own module").
diff --git a/tortoisehg/hgqt/clone.py b/tortoisehg/hgqt/clone.py
--- a/tortoisehg/hgqt/clone.py
+++ b/tortoisehg/hgqt/clone.py
@@ -32,7 +32,6 @@ from .qtgui import (
)
from mercurial import (
- cmdutil,
commands,
hg,
pycompat,
@@ -65,7 +64,7 @@ if typing.TYPE_CHECKING:
def _startrev_available() -> bool:
- entry = cmdutil.findcmd(b'clone', commands.table)[1]
+ entry = hglib.find_cmd(b'clone', commands.table)[1]
longopts = {e[1] for e in entry[1]}
return b'startrev' in longopts
diff --git a/tortoisehg/hgqt/run.py b/tortoisehg/hgqt/run.py
--- a/tortoisehg/hgqt/run.py
+++ b/tortoisehg/hgqt/run.py
@@ -19,7 +19,6 @@ from typing import (
)
from mercurial import (
- cmdutil,
encoding,
error,
extensions,
@@ -308,7 +307,7 @@ def _parse(ui, args):
else:
alias, args = b'workbench', []
- aliases, i = cmdutil.findcmd(alias, table, ui.config(b"ui", b"strict"))
+ aliases, i = hglib.find_cmd(alias, table, ui.config(b"ui", b"strict"))
for a in aliases:
if a.startswith(alias):
alias = a
@@ -842,7 +841,7 @@ def help_(ui, name: Optional[bytes]=None
ui.write(b'\n')
try:
- aliases, i = cmdutil.findcmd(name, table, False)
+ aliases, i = hglib.find_cmd(name, table, False)
except error.AmbiguousCommand as inst:
prefix = inst.prefix
select = lambda c: c.startswith(prefix)
diff --git a/tortoisehg/util/hglib.py b/tortoisehg/util/hglib.py
--- a/tortoisehg/util/hglib.py
+++ b/tortoisehg/util/hglib.py
@@ -79,9 +79,11 @@ except (ImportError, AttributeError):
try:
# mercurial >= 7.2
+ from mercurial.main_script.cmd_finder import find_cmd
from mercurial.main_script.options import parse_config_opts
from mercurial.main_script.options import early_parse_opts
except ModuleNotFoundError:
+ from mercurial.cmdutil import findcmd as find_cmd
from mercurial.dispatch import _parseconfig as parse_config_opts
from mercurial.dispatch import _earlyparseopts as early_parse_opts