27 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey', |
27 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey', |
28 'known', 'getbundle')) |
28 'known', 'getbundle')) |
29 supportedformats = set(('revlogv1', 'generaldelta')) |
29 supportedformats = set(('revlogv1', 'generaldelta')) |
30 supported = supportedformats | set(('store', 'fncache', 'shared', |
30 supported = supportedformats | set(('store', 'fncache', 'shared', |
31 'dotencode')) |
31 'dotencode')) |
|
32 openerreqs = set(('revlogv1', 'generaldelta')) |
|
33 requirements = ['revlogv1'] |
|
34 |
|
35 def _baserequirements(self, create): |
|
36 return self.requirements[:] |
32 |
37 |
33 def __init__(self, baseui, path=None, create=False): |
38 def __init__(self, baseui, path=None, create=False): |
34 repo.repository.__init__(self) |
39 repo.repository.__init__(self) |
35 self.root = os.path.realpath(util.expandpath(path)) |
40 self.root = os.path.realpath(util.expandpath(path)) |
36 self.path = os.path.join(self.root, ".hg") |
41 self.path = os.path.join(self.root, ".hg") |
54 if not os.path.isdir(self.path): |
59 if not os.path.isdir(self.path): |
55 if create: |
60 if create: |
56 if not os.path.exists(path): |
61 if not os.path.exists(path): |
57 util.makedirs(path) |
62 util.makedirs(path) |
58 util.makedir(self.path, notindexed=True) |
63 util.makedir(self.path, notindexed=True) |
59 requirements = ["revlogv1"] |
64 requirements = self._baserequirements(create) |
60 if self.ui.configbool('format', 'usestore', True): |
65 if self.ui.configbool('format', 'usestore', True): |
61 os.mkdir(os.path.join(self.path, "store")) |
66 os.mkdir(os.path.join(self.path, "store")) |
62 requirements.append("store") |
67 requirements.append("store") |
63 if self.ui.configbool('format', 'usefncache', True): |
68 if self.ui.configbool('format', 'usefncache', True): |
64 requirements.append("fncache") |
69 requirements.append("fncache") |
118 # Maps a property name to its util.filecacheentry |
123 # Maps a property name to its util.filecacheentry |
119 self._filecache = {} |
124 self._filecache = {} |
120 |
125 |
121 def _applyrequirements(self, requirements): |
126 def _applyrequirements(self, requirements): |
122 self.requirements = requirements |
127 self.requirements = requirements |
123 openerreqs = set(('revlogv1', 'generaldelta')) |
|
124 self.sopener.options = dict((r, 1) for r in requirements |
128 self.sopener.options = dict((r, 1) for r in requirements |
125 if r in openerreqs) |
129 if r in self.openerreqs) |
126 |
130 |
127 def _writerequirements(self): |
131 def _writerequirements(self): |
128 reqfile = self.opener("requires", "w") |
132 reqfile = self.opener("requires", "w") |
129 for r in self.requirements: |
133 for r in self.requirements: |
130 reqfile.write("%s\n" % r) |
134 reqfile.write("%s\n" % r) |