diff -r b70628a9aa7e -r e0194b3ea312 mercurial/exchange.py --- a/mercurial/exchange.py Fri Apr 05 11:33:47 2024 +0200 +++ b/mercurial/exchange.py Fri Apr 05 12:02:43 2024 +0200 @@ -1308,8 +1308,16 @@ _localphasemove(pushop, cheads) # don't push any phase data as there is nothing to push else: - ana = phases.analyzeremotephases(pushop.repo, cheads, remotephases) - pheads, droots = ana + unfi = pushop.repo.unfiltered() + to_rev = unfi.changelog.index.rev + to_node = unfi.changelog.node + cheads_revs = [to_rev(n) for n in cheads] + pheads_revs, _dr = phases.analyze_remote_phases( + pushop.repo, + cheads_revs, + remotephases, + ) + pheads = [to_node(r) for r in pheads_revs] ### Apply remote phase on local if remotephases.get(b'publishing', False): _localphasemove(pushop, cheads) @@ -2063,10 +2071,17 @@ pullop.stepsdone.add(b'phases') publishing = bool(remotephases.get(b'publishing', False)) if remotephases and not publishing: + unfi = pullop.repo.unfiltered() + to_rev = unfi.changelog.index.rev + to_node = unfi.changelog.node + pulledsubset_revs = [to_rev(n) for n in pullop.pulledsubset] # remote is new and non-publishing - pheads, _dr = phases.analyzeremotephases( - pullop.repo, pullop.pulledsubset, remotephases + pheads_revs, _dr = phases.analyze_remote_phases( + pullop.repo, + pulledsubset_revs, + remotephases, ) + pheads = [to_node(r) for r in pheads_revs] dheads = pullop.pulledsubset else: # Remote is old or publishing all common changesets