Support Mercurial 7.2

In Mercurial 7.2 the iteritems() method of the branchmap has been
removed. Switch to iterating over the branches and then fetching heads
by the branchheads() method. In 7.2, a call to
mercurial.initialization.init() is also needed to process a repo using
the largefiles extension.

Thanks to Michael Cho (@cho-m) for suggesting the initialization fix.

Closes #348

Co-developed-by: Michael Cho <michael@michaelcho.dev>
This commit is contained in:
Frej Drejhammar
2026-02-14 14:35:48 +01:00
parent 5c9068a1f1
commit 76db75d963
2 changed files with 11 additions and 1 deletions

View File

@@ -488,7 +488,9 @@ def branchtip(repo, heads):
def verify_heads(ui,repo,cache,force,ignore_unnamed_heads,branchesmap):
branches={}
for bn, heads in repo.branchmap().iteritems():
for bn in repo.branchmap():
heads = repo.branchmap().branchheads(bn)
branches[bn] = branchtip(repo, heads)
l=[(-repo.changelog.rev(n), n, t) for t, n in branches.items()]
l.sort()

View File

@@ -30,6 +30,14 @@ def set_origin_name(name):
origin_name = name.encode('utf8')
def setup_repo(url):
try:
# Mercurial >= 7.2 requires explicit initialization for largefile
# support to work.
from mercurial import initialization
initialization.init()
except ImportError:
pass
try:
myui=ui.ui(interactive=False)
except TypeError: