diff -r ee7e106b372b -r 8583d138f436 mercurial/exchange.py --- a/mercurial/exchange.py Fri Sep 20 21:31:58 2024 -0400 +++ b/mercurial/exchange.py Mon Jul 08 22:46:04 2024 +0200 @@ -704,8 +704,8 @@ repo = pushop.repo # very naive computation, that can be quite expensive on big repo. # However: evolution is currently slow on them anyway. - nodes = (c.node() for c in repo.set(b'::%ln', pushop.futureheads)) - pushop.outobsmarkers = pushop.repo.obsstore.relevantmarkers(nodes) + revs = repo.revs(b'::%ln', pushop.futureheads) + pushop.outobsmarkers = pushop.repo.obsstore.relevantmarkers(revs=revs) @pushdiscovery(b'bookmarks') @@ -2604,10 +2604,15 @@ ): """add an obsolescence markers part to the requested bundle""" if kwargs.get('obsmarkers', False): + unfi_cl = repo.unfiltered().changelog if heads is None: - heads = repo.heads() - subset = [c.node() for c in repo.set(b'::%ln', heads)] - markers = repo.obsstore.relevantmarkers(subset) + headrevs = repo.changelog.headrevs() + else: + get_rev = unfi_cl.index.get_rev + headrevs = [get_rev(node) for node in heads] + headrevs = [rev for rev in headrevs if rev is not None] + revs = unfi_cl.ancestors(headrevs, inclusive=True) + markers = repo.obsstore.relevantmarkers(revs=revs) markers = obsutil.sortedmarkers(markers) bundle2.buildobsmarkerspart(bundler, markers)