##// END OF EJS Templates
delta-find: introduce and use specialized _DeltaSearch class...
marmoute -
r52240:55582607 default
parent child Browse files
Show More
@@ -783,8 +783,43 b' class _BaseDeltaSearch(abc.ABC):'
783 pass
783 pass
784
784
785
785
786 class _NoDeltaSearch(_BaseDeltaSearch):
787 """Search for no delta.
788
789 This search variant is to be used in case where we should not store delta.
790 """
791
792 def _init_group(self):
793 pass
794
795 def next_group(self, good_delta=None):
796 pass
797
798
799 class _PrevDeltaSearch(_BaseDeltaSearch):
800 """Search for delta against the previous revision only
801
802 This search variant is to be used when the format does not allow for delta
803 against arbitrary bases.
804 """
805
806 def _init_group(self):
807 self.current_group = [self.target_rev - 1]
808
809 def next_group(self, good_delta=None):
810 self.current_group = None
811
812
786 class _DeltaSearch(_BaseDeltaSearch):
813 class _DeltaSearch(_BaseDeltaSearch):
814 """Generic delta search variants
815
816 (expect this to be split further)
817 """
818
787 def _init_group(self):
819 def _init_group(self):
820 # Why search for delta base if we cannot use a delta base ?
821 # also see issue6056
822 assert self.revlog.delta_config.general_delta
788 self._candidates_iterator = self._candidate_groups()
823 self._candidates_iterator = self._candidate_groups()
789 self._last_good = None
824 self._last_good = None
790 self.current_group = self._candidates_iterator.send(self._last_good)
825 self.current_group = self._candidates_iterator.send(self._last_good)
@@ -801,17 +836,6 b' class _DeltaSearch(_BaseDeltaSearch):'
801 worthwhile content. See _raw_candidate_groups for details about the
836 worthwhile content. See _raw_candidate_groups for details about the
802 group order.
837 group order.
803 """
838 """
804 # should we try to build a delta?
805 if not (len(self.revlog) and self.revlog._storedeltachains):
806 yield None
807 return
808
809 if not self.revlog.delta_config.general_delta:
810 # before general delta, there is only one possible delta base
811 yield (self.target_rev - 1,)
812 yield None
813 return
814
815 good = None
839 good = None
816
840
817 group_chunk_size = self.revlog.delta_config.candidate_group_chunk_size
841 group_chunk_size = self.revlog.delta_config.candidate_group_chunk_size
@@ -1062,9 +1086,6 b' class _DeltaSearch(_BaseDeltaSearch):'
1062
1086
1063 The group order aims at providing fast or small candidates first.
1087 The group order aims at providing fast or small candidates first.
1064 """
1088 """
1065 # Why search for delta base if we cannot use a delta base ?
1066 assert self.revlog.delta_config.general_delta
1067 # also see issue6056
1068 sparse = self.revlog.delta_config.sparse_revlog
1089 sparse = self.revlog.delta_config.sparse_revlog
1069 prev = self.target_rev - 1
1090 prev = self.target_rev - 1
1070 deltachain = lambda rev: self.revlog._deltachain(rev)[0]
1091 deltachain = lambda rev: self.revlog._deltachain(rev)[0]
@@ -1548,7 +1569,16 b' class deltacomputer:'
1548 msg %= target_rev
1569 msg %= target_rev
1549 self._write_debug(msg)
1570 self._write_debug(msg)
1550
1571
1551 search = _DeltaSearch(
1572 # should we try to build a delta?
1573 if not (len(self.revlog) and self.revlog._storedeltachains):
1574 search_cls = _NoDeltaSearch
1575 elif not self.revlog.delta_config.general_delta:
1576 # before general delta, there is only one possible delta base
1577 search_cls = _PrevDeltaSearch
1578 else:
1579 search_cls = _DeltaSearch
1580
1581 search = search_cls(
1552 self.revlog,
1582 self.revlog,
1553 revinfo,
1583 revinfo,
1554 p1r,
1584 p1r,
General Comments 0
You need to be logged in to leave comments. Login now