diff -r 5d3495e394d5 -r ad11edefa7c4 mercurial/localrepo.py --- a/mercurial/localrepo.py Mon Feb 15 13:19:07 2016 -0800 +++ b/mercurial/localrepo.py Mon Feb 15 13:20:20 2016 -0800 @@ -242,9 +242,6 @@ # only functions defined in module of enabled extensions are invoked featuresetupfuncs = set() - def _baserequirements(self, create): - return ['revlogv1'] - def __init__(self, baseui, path=None, create=False): self.requirements = set() self.wvfs = scmutil.vfs(path, expandpath=True, realpath=True) @@ -282,28 +279,13 @@ if not self.vfs.isdir(): if create: - requirements = set(self._baserequirements(create)) - if self.ui.configbool('format', 'usestore', True): - requirements.add("store") - if self.ui.configbool('format', 'usefncache', True): - requirements.add("fncache") - if self.ui.configbool('format', 'dotencode', True): - requirements.add('dotencode') - - if scmutil.gdinitconfig(self.ui): - requirements.add("generaldelta") - if self.ui.configbool('experimental', 'treemanifest', False): - requirements.add("treemanifest") - if self.ui.configbool('experimental', 'manifestv2', False): - requirements.add("manifestv2") - - self.requirements = requirements + self.requirements = newreporequirements(self) if not self.wvfs.exists(): self.wvfs.makedirs() self.vfs.makedir(notindexed=True) - if 'store' in requirements: + if 'store' in self.requirements: self.vfs.mkdir("store") # create an invalid changelog @@ -1969,3 +1951,27 @@ def islocal(path): return True + +def newreporequirements(repo): + """Determine the set of requirements for a new local repository. + + Extensions can wrap this function to specify custom requirements for + new repositories. + """ + ui = repo.ui + requirements = set(['revlogv1']) + if ui.configbool('format', 'usestore', True): + requirements.add('store') + if ui.configbool('format', 'usefncache', True): + requirements.add('fncache') + if ui.configbool('format', 'dotencode', True): + requirements.add('dotencode') + + if scmutil.gdinitconfig(ui): + requirements.add('generaldelta') + if ui.configbool('experimental', 'treemanifest', False): + requirements.add('treemanifest') + if ui.configbool('experimental', 'manifestv2', False): + requirements.add('manifestv2') + + return requirements