240 |
240 |
241 # a list of (ui, featureset) functions. |
241 # a list of (ui, featureset) functions. |
242 # only functions defined in module of enabled extensions are invoked |
242 # only functions defined in module of enabled extensions are invoked |
243 featuresetupfuncs = set() |
243 featuresetupfuncs = set() |
244 |
244 |
245 def _baserequirements(self, create): |
|
246 return ['revlogv1'] |
|
247 |
|
248 def __init__(self, baseui, path=None, create=False): |
245 def __init__(self, baseui, path=None, create=False): |
249 self.requirements = set() |
246 self.requirements = set() |
250 self.wvfs = scmutil.vfs(path, expandpath=True, realpath=True) |
247 self.wvfs = scmutil.vfs(path, expandpath=True, realpath=True) |
251 self.wopener = self.wvfs |
248 self.wopener = self.wvfs |
252 self.root = self.wvfs.base |
249 self.root = self.wvfs.base |
280 else: |
277 else: |
281 self.supported = self._basesupported |
278 self.supported = self._basesupported |
282 |
279 |
283 if not self.vfs.isdir(): |
280 if not self.vfs.isdir(): |
284 if create: |
281 if create: |
285 requirements = set(self._baserequirements(create)) |
282 self.requirements = newreporequirements(self) |
286 if self.ui.configbool('format', 'usestore', True): |
|
287 requirements.add("store") |
|
288 if self.ui.configbool('format', 'usefncache', True): |
|
289 requirements.add("fncache") |
|
290 if self.ui.configbool('format', 'dotencode', True): |
|
291 requirements.add('dotencode') |
|
292 |
|
293 if scmutil.gdinitconfig(self.ui): |
|
294 requirements.add("generaldelta") |
|
295 if self.ui.configbool('experimental', 'treemanifest', False): |
|
296 requirements.add("treemanifest") |
|
297 if self.ui.configbool('experimental', 'manifestv2', False): |
|
298 requirements.add("manifestv2") |
|
299 |
|
300 self.requirements = requirements |
|
301 |
283 |
302 if not self.wvfs.exists(): |
284 if not self.wvfs.exists(): |
303 self.wvfs.makedirs() |
285 self.wvfs.makedirs() |
304 self.vfs.makedir(notindexed=True) |
286 self.vfs.makedir(notindexed=True) |
305 |
287 |
306 if 'store' in requirements: |
288 if 'store' in self.requirements: |
307 self.vfs.mkdir("store") |
289 self.vfs.mkdir("store") |
308 |
290 |
309 # create an invalid changelog |
291 # create an invalid changelog |
310 self.vfs.append( |
292 self.vfs.append( |
311 "00changelog.i", |
293 "00changelog.i", |
1967 def instance(ui, path, create): |
1949 def instance(ui, path, create): |
1968 return localrepository(ui, util.urllocalpath(path), create) |
1950 return localrepository(ui, util.urllocalpath(path), create) |
1969 |
1951 |
1970 def islocal(path): |
1952 def islocal(path): |
1971 return True |
1953 return True |
|
1954 |
|
1955 def newreporequirements(repo): |
|
1956 """Determine the set of requirements for a new local repository. |
|
1957 |
|
1958 Extensions can wrap this function to specify custom requirements for |
|
1959 new repositories. |
|
1960 """ |
|
1961 ui = repo.ui |
|
1962 requirements = set(['revlogv1']) |
|
1963 if ui.configbool('format', 'usestore', True): |
|
1964 requirements.add('store') |
|
1965 if ui.configbool('format', 'usefncache', True): |
|
1966 requirements.add('fncache') |
|
1967 if ui.configbool('format', 'dotencode', True): |
|
1968 requirements.add('dotencode') |
|
1969 |
|
1970 if scmutil.gdinitconfig(ui): |
|
1971 requirements.add('generaldelta') |
|
1972 if ui.configbool('experimental', 'treemanifest', False): |
|
1973 requirements.add('treemanifest') |
|
1974 if ui.configbool('experimental', 'manifestv2', False): |
|
1975 requirements.add('manifestv2') |
|
1976 |
|
1977 return requirements |