894 |
894 |
895 class manifestrevlog(revlog.revlog): |
895 class manifestrevlog(revlog.revlog): |
896 '''A revlog that stores manifest texts. This is responsible for caching the |
896 '''A revlog that stores manifest texts. This is responsible for caching the |
897 full-text manifest contents. |
897 full-text manifest contents. |
898 ''' |
898 ''' |
899 def __init__(self, opener, indexfile): |
899 def __init__(self, opener, dir=''): |
900 super(manifestrevlog, self).__init__(opener, indexfile) |
|
901 |
|
902 # During normal operations, we expect to deal with not more than four |
900 # During normal operations, we expect to deal with not more than four |
903 # revs at a time (such as during commit --amend). When rebasing large |
901 # revs at a time (such as during commit --amend). When rebasing large |
904 # stacks of commits, the number can go up, hence the config knob below. |
902 # stacks of commits, the number can go up, hence the config knob below. |
905 cachesize = 4 |
903 cachesize = 4 |
|
904 usetreemanifest = False |
|
905 usemanifestv2 = False |
906 opts = getattr(opener, 'options', None) |
906 opts = getattr(opener, 'options', None) |
907 if opts is not None: |
907 if opts is not None: |
908 cachesize = opts.get('manifestcachesize', cachesize) |
908 cachesize = opts.get('manifestcachesize', cachesize) |
|
909 usetreemanifest = opts.get('treemanifest', usetreemanifest) |
|
910 usemanifestv2 = opts.get('manifestv2', usemanifestv2) |
|
911 |
|
912 self._treeondisk = usetreemanifest |
|
913 self._usemanifestv2 = usemanifestv2 |
|
914 |
909 self._fulltextcache = util.lrucachedict(cachesize) |
915 self._fulltextcache = util.lrucachedict(cachesize) |
|
916 |
|
917 indexfile = "00manifest.i" |
|
918 if dir: |
|
919 assert self._treeondisk, 'opts is %r' % opts |
|
920 if not dir.endswith('/'): |
|
921 dir = dir + '/' |
|
922 indexfile = "meta/" + dir + "00manifest.i" |
|
923 self._dir = dir |
|
924 |
|
925 super(manifestrevlog, self).__init__(opener, indexfile) |
910 |
926 |
911 @property |
927 @property |
912 def fulltextcache(self): |
928 def fulltextcache(self): |
913 return self._fulltextcache |
929 return self._fulltextcache |
914 |
930 |
1091 # During normal operations, we expect to deal with not more than four |
1107 # During normal operations, we expect to deal with not more than four |
1092 # revs at a time (such as during commit --amend). When rebasing large |
1108 # revs at a time (such as during commit --amend). When rebasing large |
1093 # stacks of commits, the number can go up, hence the config knob below. |
1109 # stacks of commits, the number can go up, hence the config knob below. |
1094 cachesize = 4 |
1110 cachesize = 4 |
1095 usetreemanifest = False |
1111 usetreemanifest = False |
1096 usemanifestv2 = False |
|
1097 opts = getattr(opener, 'options', None) |
1112 opts = getattr(opener, 'options', None) |
1098 if opts is not None: |
1113 if opts is not None: |
1099 cachesize = opts.get('manifestcachesize', cachesize) |
1114 cachesize = opts.get('manifestcachesize', cachesize) |
1100 usetreemanifest = opts.get('treemanifest', usetreemanifest) |
1115 usetreemanifest = opts.get('treemanifest', usetreemanifest) |
1101 usemanifestv2 = opts.get('manifestv2', usemanifestv2) |
|
1102 self._mancache = util.lrucachedict(cachesize) |
1116 self._mancache = util.lrucachedict(cachesize) |
1103 self._treeinmem = usetreemanifest |
1117 self._treeinmem = usetreemanifest |
1104 self._treeondisk = usetreemanifest |
1118 super(manifest, self).__init__(opener, dir=dir) |
1105 self._usemanifestv2 = usemanifestv2 |
|
1106 indexfile = "00manifest.i" |
|
1107 if dir: |
|
1108 assert self._treeondisk, 'opts is %r' % opts |
|
1109 if not dir.endswith('/'): |
|
1110 dir = dir + '/' |
|
1111 indexfile = "meta/" + dir + "00manifest.i" |
|
1112 super(manifest, self).__init__(opener, indexfile) |
|
1113 self._dir = dir |
|
1114 # The dirlogcache is kept on the root manifest log |
1119 # The dirlogcache is kept on the root manifest log |
1115 if dir: |
1120 if dir: |
1116 self._dirlogcache = dirlogcache |
1121 self._dirlogcache = dirlogcache |
1117 else: |
1122 else: |
1118 self._dirlogcache = {'': self} |
1123 self._dirlogcache = {'': self} |