##// END OF EJS Templates
actions: calculate what all parts does the operation touches...
Pulkit Goyal -
r47093:a83e1496 default
parent child Browse files
Show More
@@ -66,6 +66,18 b' class improvement(object):'
66 postdowngrademessage
66 postdowngrademessage
67 Message intended for humans which will be shown post an upgrade
67 Message intended for humans which will be shown post an upgrade
68 operation in which this improvement was removed
68 operation in which this improvement was removed
69
70 touches_filelogs (bool)
71 Whether this improvement touches filelogs
72
73 touches_manifests (bool)
74 Whether this improvement touches manifests
75
76 touches_changelog (bool)
77 Whether this improvement touches changelog
78
79 touches_requirements (bool)
80 Whether this improvement changes repository requirements
69 """
81 """
70
82
71 def __init__(self, name, type, description, upgrademessage):
83 def __init__(self, name, type, description, upgrademessage):
@@ -75,6 +87,12 b' class improvement(object):'
75 self.upgrademessage = upgrademessage
87 self.upgrademessage = upgrademessage
76 self.postupgrademessage = None
88 self.postupgrademessage = None
77 self.postdowngrademessage = None
89 self.postdowngrademessage = None
90 # By default for now, we assume every improvement touches
91 # all the things
92 self.touches_filelogs = True
93 self.touches_manifests = True
94 self.touches_changelog = True
95 self.touches_requirements = True
78
96
79 def __eq__(self, other):
97 def __eq__(self, other):
80 if not isinstance(other, improvement):
98 if not isinstance(other, improvement):
@@ -128,6 +146,12 b' class formatvariant(improvement):'
128 # operation in which this improvement was removed
146 # operation in which this improvement was removed
129 postdowngrademessage = None
147 postdowngrademessage = None
130
148
149 # By default for now, we assume every improvement touches all the things
150 touches_filelogs = True
151 touches_manifests = True
152 touches_changelog = True
153 touches_requirements = True
154
131 def __init__(self):
155 def __init__(self):
132 raise NotImplementedError()
156 raise NotImplementedError()
133
157
@@ -674,6 +698,72 b' class UpgradeOperation(object):'
674 # should this operation create a backup of the store
698 # should this operation create a backup of the store
675 self.backup_store = backup_store
699 self.backup_store = backup_store
676
700
701 # whether the operation touches different revlogs at all or not
702 self.touches_filelogs = self._touches_filelogs()
703 self.touches_manifests = self._touches_manifests()
704 self.touches_changelog = self._touches_changelog()
705 # whether the operation touches requirements file or not
706 self.touches_requirements = self._touches_requirements()
707 self.touches_store = (
708 self.touches_filelogs
709 or self.touches_manifests
710 or self.touches_changelog
711 )
712 # does the operation only touches repository requirement
713 self.requirements_only = (
714 self.touches_requirements and not self.touches_store
715 )
716
717 def _touches_filelogs(self):
718 for a in self.upgrade_actions:
719 # in optimisations, we re-process the revlogs again
720 if a.type == OPTIMISATION:
721 return True
722 elif a.touches_filelogs:
723 return True
724 for a in self.removed_actions:
725 if a.touches_filelogs:
726 return True
727 return False
728
729 def _touches_manifests(self):
730 for a in self.upgrade_actions:
731 # in optimisations, we re-process the revlogs again
732 if a.type == OPTIMISATION:
733 return True
734 elif a.touches_manifests:
735 return True
736 for a in self.removed_actions:
737 if a.touches_manifests:
738 return True
739 return False
740
741 def _touches_changelog(self):
742 for a in self.upgrade_actions:
743 # in optimisations, we re-process the revlogs again
744 if a.type == OPTIMISATION:
745 return True
746 elif a.touches_changelog:
747 return True
748 for a in self.removed_actions:
749 if a.touches_changelog:
750 return True
751 return False
752
753 def _touches_requirements(self):
754 for a in self.upgrade_actions:
755 # optimisations are used to re-process revlogs and does not result
756 # in a requirement being added or removed
757 if a.type == OPTIMISATION:
758 pass
759 elif a.touches_requirements:
760 return True
761 for a in self.removed_actions:
762 if a.touches_requirements:
763 return True
764
765 return False
766
677 def _write_labeled(self, l, label):
767 def _write_labeled(self, l, label):
678 """
768 """
679 Utility function to aid writing of a list under one label
769 Utility function to aid writing of a list under one label
General Comments 0
You need to be logged in to leave comments. Login now