mercurial/localrepo.py
changeset 28164 ad11edefa7c4
parent 28163 5d3495e394d5
child 28198 ddc07ddcca94
--- 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