equal
deleted
inserted
replaced
307 |
307 |
308 # Increment the sub-version when the revlog v2 format changes to lock out old |
308 # Increment the sub-version when the revlog v2 format changes to lock out old |
309 # clients. |
309 # clients. |
310 REVLOGV2_REQUIREMENT = 'exp-revlogv2.0' |
310 REVLOGV2_REQUIREMENT = 'exp-revlogv2.0' |
311 |
311 |
|
312 # Functions receiving (ui, features) that extensions can register to impact |
|
313 # the ability to load repositories with custom requirements. Only |
|
314 # functions defined in loaded extensions are called. |
|
315 # |
|
316 # The function receives a set of requirement strings that the repository |
|
317 # is capable of opening. Functions will typically add elements to the |
|
318 # set to reflect that the extension knows how to handle that requirements. |
|
319 featuresetupfuncs = set() |
|
320 |
312 class localrepository(object): |
321 class localrepository(object): |
313 |
322 |
314 # obsolete experimental requirements: |
323 # obsolete experimental requirements: |
315 # - manifestv2: An experimental new manifest format that allowed |
324 # - manifestv2: An experimental new manifest format that allowed |
316 # for stem compression of long paths. Experiment ended up not |
325 # for stem compression of long paths. Experiment ended up not |
333 openerreqs = { |
342 openerreqs = { |
334 'revlogv1', |
343 'revlogv1', |
335 'generaldelta', |
344 'generaldelta', |
336 'treemanifest', |
345 'treemanifest', |
337 } |
346 } |
338 |
|
339 # a list of (ui, featureset) functions. |
|
340 # only functions defined in module of enabled extensions are invoked |
|
341 featuresetupfuncs = set() |
|
342 |
347 |
343 # list of prefix for file which can be written without 'wlock' |
348 # list of prefix for file which can be written without 'wlock' |
344 # Extensions should extend this list when needed |
349 # Extensions should extend this list when needed |
345 _wlockfreeprefix = { |
350 _wlockfreeprefix = { |
346 # We migh consider requiring 'wlock' for the next |
351 # We migh consider requiring 'wlock' for the next |
397 self.ui.readconfig(self.vfs.join("hgrc"), self.root) |
402 self.ui.readconfig(self.vfs.join("hgrc"), self.root) |
398 self._loadextensions() |
403 self._loadextensions() |
399 except IOError: |
404 except IOError: |
400 pass |
405 pass |
401 |
406 |
402 if self.featuresetupfuncs: |
407 if featuresetupfuncs: |
403 self.supported = set(self._basesupported) # use private copy |
408 self.supported = set(self._basesupported) # use private copy |
404 extmods = set(m.__name__ for n, m |
409 extmods = set(m.__name__ for n, m |
405 in extensions.extensions(self.ui)) |
410 in extensions.extensions(self.ui)) |
406 for setupfunc in self.featuresetupfuncs: |
411 for setupfunc in featuresetupfuncs: |
407 if setupfunc.__module__ in extmods: |
412 if setupfunc.__module__ in extmods: |
408 setupfunc(self.ui, self.supported) |
413 setupfunc(self.ui, self.supported) |
409 else: |
414 else: |
410 self.supported = self._basesupported |
415 self.supported = self._basesupported |
411 color.setup(self.ui) |
416 color.setup(self.ui) |