diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py --- a/mercurial/revlogutils/deltas.py +++ b/mercurial/revlogutils/deltas.py @@ -711,8 +711,9 @@ def _rawgroups(revlog, p1, p2, cachedelt # search for snapshot in parents delta chain # map: snapshot-level: snapshot-rev parents_snaps = collections.defaultdict(set) - for p in parents: - for idx, s in enumerate(deltachain(p)): + candidate_chains = [deltachain(p) for p in parents] + for chain in candidate_chains: + for idx, s in enumerate(chain): if not revlog.issnapshot(s): break parents_snaps[idx].add(s)