diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py index a224ce5694b393e464acb15b7abc29e99ec06cbf_bWVyY3VyaWFsL3JldmxvZ3V0aWxzL2RlbHRhcy5weQ==..99869dcf3ba06679d73db591a87e739d035770be_bWVyY3VyaWFsL3JldmxvZ3V0aWxzL2RlbHRhcy5weQ== 100644 --- a/mercurial/revlogutils/deltas.py +++ b/mercurial/revlogutils/deltas.py @@ -851,7 +851,7 @@ def next_group(self, good_delta=None): old_good = self._last_good if good_delta is not None: - self._last_good = good_delta.base + self._last_good = good_delta if self.current_stage == _STAGE_CACHED and good_delta is not None: # the cache is good, let us use the cache as requested self._candidates_iterator = None @@ -1213,13 +1213,9 @@ if good is not None: break # if we have a refinable value, try to refine it - if ( - good is not None - and good not in (self.p1, self.p2) - and self.revlog.issnapshot(good) - ): + if good is not None and good.snapshotdepth is not None: assert self.current_stage == _STAGE_SNAPSHOT # refine snapshot down previous = None while previous != good: previous = good @@ -1221,11 +1217,11 @@ assert self.current_stage == _STAGE_SNAPSHOT # refine snapshot down previous = None while previous != good: previous = good - base = self.revlog.deltaparent(good) + base = self.revlog.deltaparent(good.base) if base == nullrev: break good = yield (base,) # refine snapshot up if not self.snapshot_cache.snapshots: @@ -1227,10 +1223,10 @@ if base == nullrev: break good = yield (base,) # refine snapshot up if not self.snapshot_cache.snapshots: - self.snapshot_cache.update(self.revlog, good + 1) + self.snapshot_cache.update(self.revlog, good.base + 1) previous = None while good != previous: previous = good children = tuple( @@ -1233,8 +1229,8 @@ previous = None while good != previous: previous = good children = tuple( - sorted(c for c in self.snapshot_cache.snapshots[good]) + sorted(c for c in self.snapshot_cache.snapshots[good.base]) ) good = yield children yield None