30 from .utils import compression |
30 from .utils import compression |
31 |
31 |
32 # list of requirements that request a clone of all revlog if added/removed |
32 # list of requirements that request a clone of all revlog if added/removed |
33 RECLONES_REQUIREMENTS = { |
33 RECLONES_REQUIREMENTS = { |
34 b'generaldelta', |
34 b'generaldelta', |
35 localrepo.SPARSEREVLOG_REQUIREMENT, |
35 requirements.SPARSEREVLOG_REQUIREMENT, |
36 } |
36 } |
37 |
37 |
38 |
38 |
39 def requiredsourcerequirements(repo): |
39 def requiredsourcerequirements(repo): |
40 """Obtain requirements required to be present to upgrade a repo. |
40 """Obtain requirements required to be present to upgrade a repo. |
74 If an upgrade were to create a repository that dropped a requirement, |
74 If an upgrade were to create a repository that dropped a requirement, |
75 the dropped requirement must appear in the returned set for the upgrade |
75 the dropped requirement must appear in the returned set for the upgrade |
76 to be allowed. |
76 to be allowed. |
77 """ |
77 """ |
78 supported = { |
78 supported = { |
79 localrepo.SPARSEREVLOG_REQUIREMENT, |
79 requirements.SPARSEREVLOG_REQUIREMENT, |
80 localrepo.SIDEDATA_REQUIREMENT, |
80 requirements.SIDEDATA_REQUIREMENT, |
81 localrepo.COPIESSDC_REQUIREMENT, |
81 requirements.COPIESSDC_REQUIREMENT, |
82 localrepo.NODEMAP_REQUIREMENT, |
82 requirements.NODEMAP_REQUIREMENT, |
83 } |
83 } |
84 for name in compression.compengines: |
84 for name in compression.compengines: |
85 engine = compression.compengines[name] |
85 engine = compression.compengines[name] |
86 if engine.available() and engine.revlogheader(): |
86 if engine.available() and engine.revlogheader(): |
87 supported.add(b'exp-compression-%s' % name) |
87 supported.add(b'exp-compression-%s' % name) |
102 b'dotencode', |
102 b'dotencode', |
103 b'fncache', |
103 b'fncache', |
104 b'generaldelta', |
104 b'generaldelta', |
105 b'revlogv1', |
105 b'revlogv1', |
106 b'store', |
106 b'store', |
107 localrepo.SPARSEREVLOG_REQUIREMENT, |
107 requirements.SPARSEREVLOG_REQUIREMENT, |
108 localrepo.SIDEDATA_REQUIREMENT, |
108 requirements.SIDEDATA_REQUIREMENT, |
109 localrepo.COPIESSDC_REQUIREMENT, |
109 requirements.COPIESSDC_REQUIREMENT, |
110 localrepo.NODEMAP_REQUIREMENT, |
110 requirements.NODEMAP_REQUIREMENT, |
111 } |
111 } |
112 for name in compression.compengines: |
112 for name in compression.compengines: |
113 engine = compression.compengines[name] |
113 engine = compression.compengines[name] |
114 if engine.available() and engine.revlogheader(): |
114 if engine.available() and engine.revlogheader(): |
115 supported.add(b'exp-compression-%s' % name) |
115 supported.add(b'exp-compression-%s' % name) |
130 """ |
130 """ |
131 supported = { |
131 supported = { |
132 b'dotencode', |
132 b'dotencode', |
133 b'fncache', |
133 b'fncache', |
134 b'generaldelta', |
134 b'generaldelta', |
135 localrepo.SPARSEREVLOG_REQUIREMENT, |
135 requirements.SPARSEREVLOG_REQUIREMENT, |
136 localrepo.SIDEDATA_REQUIREMENT, |
136 requirements.SIDEDATA_REQUIREMENT, |
137 localrepo.COPIESSDC_REQUIREMENT, |
137 requirements.COPIESSDC_REQUIREMENT, |
138 localrepo.NODEMAP_REQUIREMENT, |
138 requirements.NODEMAP_REQUIREMENT, |
139 } |
139 } |
140 for name in compression.compengines: |
140 for name in compression.compengines: |
141 engine = compression.compengines[name] |
141 engine = compression.compengines[name] |
142 if engine.available() and engine.revlogheader(): |
142 if engine.available() and engine.revlogheader(): |
143 supported.add(b'exp-compression-%s' % name) |
143 supported.add(b'exp-compression-%s' % name) |
337 |
337 |
338 @registerformatvariant |
338 @registerformatvariant |
339 class sparserevlog(requirementformatvariant): |
339 class sparserevlog(requirementformatvariant): |
340 name = b'sparserevlog' |
340 name = b'sparserevlog' |
341 |
341 |
342 _requirement = localrepo.SPARSEREVLOG_REQUIREMENT |
342 _requirement = requirements.SPARSEREVLOG_REQUIREMENT |
343 |
343 |
344 default = True |
344 default = True |
345 |
345 |
346 description = _( |
346 description = _( |
347 b'in order to limit disk reading and memory usage on older ' |
347 b'in order to limit disk reading and memory usage on older ' |
379 |
379 |
380 @registerformatvariant |
380 @registerformatvariant |
381 class persistentnodemap(requirementformatvariant): |
381 class persistentnodemap(requirementformatvariant): |
382 name = b'persistent-nodemap' |
382 name = b'persistent-nodemap' |
383 |
383 |
384 _requirement = localrepo.NODEMAP_REQUIREMENT |
384 _requirement = requirements.NODEMAP_REQUIREMENT |
385 |
385 |
386 default = False |
386 default = False |
387 |
387 |
388 description = _( |
388 description = _( |
389 b'persist the node -> rev mapping on disk to speedup lookup' |
389 b'persist the node -> rev mapping on disk to speedup lookup' |
724 |
724 |
725 def getsidedatacompanion(srcrepo, dstrepo): |
725 def getsidedatacompanion(srcrepo, dstrepo): |
726 sidedatacompanion = None |
726 sidedatacompanion = None |
727 removedreqs = srcrepo.requirements - dstrepo.requirements |
727 removedreqs = srcrepo.requirements - dstrepo.requirements |
728 addedreqs = dstrepo.requirements - srcrepo.requirements |
728 addedreqs = dstrepo.requirements - srcrepo.requirements |
729 if localrepo.SIDEDATA_REQUIREMENT in removedreqs: |
729 if requirements.SIDEDATA_REQUIREMENT in removedreqs: |
730 |
730 |
731 def sidedatacompanion(rl, rev): |
731 def sidedatacompanion(rl, rev): |
732 rl = getattr(rl, '_revlog', rl) |
732 rl = getattr(rl, '_revlog', rl) |
733 if rl.flags(rev) & revlog.REVIDX_SIDEDATA: |
733 if rl.flags(rev) & revlog.REVIDX_SIDEDATA: |
734 return True, (), {} |
734 return True, (), {} |
735 return False, (), {} |
735 return False, (), {} |
736 |
736 |
737 elif localrepo.COPIESSDC_REQUIREMENT in addedreqs: |
737 elif requirements.COPIESSDC_REQUIREMENT in addedreqs: |
738 sidedatacompanion = metadata.getsidedataadder(srcrepo, dstrepo) |
738 sidedatacompanion = metadata.getsidedataadder(srcrepo, dstrepo) |
739 elif localrepo.COPIESSDC_REQUIREMENT in removedreqs: |
739 elif requirements.COPIESSDC_REQUIREMENT in removedreqs: |
740 sidedatacompanion = metadata.getsidedataremover(srcrepo, dstrepo) |
740 sidedatacompanion = metadata.getsidedataremover(srcrepo, dstrepo) |
741 return sidedatacompanion |
741 return sidedatacompanion |
742 |
742 |
743 |
743 |
744 def matchrevlog(revlogfilter, entry): |
744 def matchrevlog(revlogfilter, entry): |