Comments
Patch
@@ -243,40 +243,41 @@ class localrepository(object):
if create:
if not self.wvfs.exists():
self.wvfs.makedirs()
self.vfs.makedir(notindexed=True)
- self.requirements.update(self._baserequirements(create))
+ requirements = set(self._baserequirements(create))
+
if self.ui.configbool('format', 'usestore', True):
self.vfs.mkdir("store")
- self.requirements.add("store")
+ requirements.add('store')
if self.ui.configbool('format', 'usefncache', True):
- self.requirements.add("fncache")
+ requirements.add('fncache')
if self.ui.configbool('format', 'dotencode', True):
- self.requirements.add('dotencode')
+ requirements.add('dotencode')
# create an invalid changelog
self.vfs.append(
"00changelog.i",
'\0\0\0\2' # represents revlogv2
' dummy changelog to prevent using the old repo layout'
)
# experimental config: format.generaldelta
if self.ui.configbool('format', 'generaldelta', False):
- self.requirements.add("generaldelta")
+ requirements.add('generaldelta')
if self.ui.configbool('experimental', 'treemanifest', False):
- self.requirements.add("treemanifest")
+ requirements.add('treemanifest')
if self.ui.configbool('experimental', 'manifestv2', False):
- self.requirements.add("manifestv2")
+ requirements.add('manifestv2')
else:
raise error.RepoError(_("repository %s not found") % path)
elif create:
raise error.RepoError(_("repository %s already exists") % path)
else:
try:
- self.requirements = scmutil.readrequires(
- self.vfs, self.supported)
+ requirements = scmutil.readrequires(self.vfs, self.supported)
except IOError as inst:
if inst.errno != errno.ENOENT:
raise
+ requirements = set()
self.sharedpath = self.path
try:
vfs = scmutil.vfs(self.vfs.read("sharedpath").rstrip('\n'),
@@ -289,17 +290,16 @@ class localrepository(object):
except IOError as inst:
if inst.errno != errno.ENOENT:
raise
- self.store = store.store(
- self.requirements, self.sharedpath, scmutil.vfs)
+ self.store = store.store(requirements, self.sharedpath, scmutil.vfs)
self.spath = self.store.path
self.svfs = self.store.vfs
self.sjoin = self.store.join
self.vfs.createmode = self.store.createmode
- self._applyopenerreqs()
- if create:
- self._writerequirements()
+
+ # We can't call _replacerequirements() until we have a store vfs.
+ self._replacerequirements(requirements, frominit=not create)
self._dirstatevalidatewarned = False
self._branchcaches = {}
@@ -1871,12 +1871,10 @@ class localrepository(object):
# new requirements = old non-format requirements +
# new format-related remote requirements
# requirements from the streamed-in repository
- self.requirements = remotereqs | (
+ self._replacerequirements(remotereqs |
self.requirements - self.supportedformats)
- self._applyopenerreqs()
- self._writerequirements()
if remotebranchmap:
rbheads = []
closed = []