##// END OF EJS Templates
delta-find: move sparse-revlog delta checks in the associated class...
marmoute -
r52251:383e99f6 default
parent child Browse files
Show More
@@ -662,8 +662,6 b' class _BaseDeltaSearch(abc.ABC):'
662 return False
662 return False
663 if not self._is_good_delta_info_chain_quality(deltainfo):
663 if not self._is_good_delta_info_chain_quality(deltainfo):
664 return False
664 return False
665 if not self._is_good_delta_info_snapshot_constraints(deltainfo):
666 return False
667 return True
665 return True
668
666
669 def _is_good_delta_info_universal(self, deltainfo):
667 def _is_good_delta_info_universal(self, deltainfo):
@@ -746,34 +744,6 b' class _BaseDeltaSearch(abc.ABC):'
746 return False
744 return False
747 return True
745 return True
748
746
749 def _is_good_delta_info_snapshot_constraints(self, deltainfo):
750 """Returns True if the chain associated with snapshots
751
752 This performs checks for format that use sparse-revlog and intermediate
753 snapshots.
754
755 This is used by is_good_delta_info.
756 """
757 # if not a snapshot, this method has no filtering to do
758 if deltainfo.snapshotdepth is None:
759 return True
760 # bad delta from intermediate snapshot size limit
761 #
762 # If an intermediate snapshot size is higher than the limit. The
763 # limit exist to prevent endless chain of intermediate delta to be
764 # created.
765 if (
766 self.revinfo.textlen >> deltainfo.snapshotdepth
767 ) < deltainfo.deltalen:
768 return False
769
770 # bad delta if new intermediate snapshot is larger than the previous
771 # snapshot
772 if self.revlog.length(deltainfo.base) < deltainfo.deltalen:
773 return False
774
775 return True
776
777 @property
747 @property
778 def done(self):
748 def done(self):
779 """True when all possible candidate have been tested"""
749 """True when all possible candidate have been tested"""
@@ -1092,6 +1062,48 b' class _GeneralDeltaSearch(_BaseDeltaSear'
1092 class _SparseDeltaSearch(_GeneralDeltaSearch):
1062 class _SparseDeltaSearch(_GeneralDeltaSearch):
1093 """Delta search variants for sparse-revlog"""
1063 """Delta search variants for sparse-revlog"""
1094
1064
1065 def is_good_delta_info(self, deltainfo):
1066 """Returns True if the given delta is good.
1067
1068 Good means that it is within the disk span, disk size, and chain length
1069 bounds that we know to be performant.
1070 """
1071 if not self._is_good_delta_info_universal(deltainfo):
1072 return False
1073 if not self._is_good_delta_info_chain_quality(deltainfo):
1074 return False
1075 if not self._is_good_delta_info_snapshot_constraints(deltainfo):
1076 return False
1077 return True
1078
1079 def _is_good_delta_info_snapshot_constraints(self, deltainfo):
1080 """Returns True if the chain associated with snapshots
1081
1082 This performs checks for format that use sparse-revlog and intermediate
1083 snapshots.
1084
1085 This is used by is_good_delta_info.
1086 """
1087 # if not a snapshot, this method has no filtering to do
1088 if deltainfo.snapshotdepth is None:
1089 return True
1090 # bad delta from intermediate snapshot size limit
1091 #
1092 # If an intermediate snapshot size is higher than the limit. The
1093 # limit exist to prevent endless chain of intermediate delta to be
1094 # created.
1095 if (
1096 self.revinfo.textlen >> deltainfo.snapshotdepth
1097 ) < deltainfo.deltalen:
1098 return False
1099
1100 # bad delta if new intermediate snapshot is larger than the previous
1101 # snapshot
1102 if self.revlog.length(deltainfo.base) < deltainfo.deltalen:
1103 return False
1104
1105 return True
1106
1095 def _iter_snapshots_base(self):
1107 def _iter_snapshots_base(self):
1096 assert self.revlog.delta_config.sparse_revlog
1108 assert self.revlog.delta_config.sparse_revlog
1097 assert self.current_stage == _STAGE_SNAPSHOT
1109 assert self.current_stage == _STAGE_SNAPSHOT
General Comments 0
You need to be logged in to leave comments. Login now