##// END OF EJS Templates
compression: introduce a `storage.revlog.zstd.level` configuration...
marmoute -
r42211:bb271ec2 default
parent child Browse files
Show More
@@ -995,6 +995,9 b" coreconfigitem('storage', 'revlog.reuse-"
995 coreconfigitem('storage', 'revlog.zlib.level',
995 coreconfigitem('storage', 'revlog.zlib.level',
996 default=None,
996 default=None,
997 )
997 )
998 coreconfigitem('storage', 'revlog.zstd.level',
999 default=None,
1000 )
998 coreconfigitem('server', 'bookmarks-pushkey-compat',
1001 coreconfigitem('server', 'bookmarks-pushkey-compat',
999 default=True,
1002 default=True,
1000 )
1003 )
@@ -1886,6 +1886,12 b' category impact performance and reposito'
1886 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
1886 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
1887 default value is 6.
1887 default value is 6.
1888
1888
1889
1890 ``revlog.zstd.level``
1891 zstd compression level used when storing data into the repository. Accepted
1892 Value range from 1 (lowest compression) to 22 (highest compression).
1893 (default 3)
1894
1889 ``server``
1895 ``server``
1890 ----------
1896 ----------
1891
1897
@@ -802,6 +802,11 b' def resolverevlogstorevfsoptions(ui, req'
802 if not (0 <= options[b'zlib.level'] <= 9):
802 if not (0 <= options[b'zlib.level'] <= 9):
803 msg = _('invalid value for `storage.revlog.zlib.level` config: %d')
803 msg = _('invalid value for `storage.revlog.zlib.level` config: %d')
804 raise error.Abort(msg % options[b'zlib.level'])
804 raise error.Abort(msg % options[b'zlib.level'])
805 options[b'zstd.level'] = ui.configint(b'storage', b'revlog.zstd.level')
806 if options[b'zstd.level'] is not None:
807 if not (0 <= options[b'zstd.level'] <= 22):
808 msg = _('invalid value for `storage.revlog.zstd.level` config: %d')
809 raise error.Abort(msg % options[b'zstd.level'])
805
810
806 if repository.NARROW_REQUIREMENT in requirements:
811 if repository.NARROW_REQUIREMENT in requirements:
807 options[b'enableellipsis'] = True
812 options[b'enableellipsis'] = True
@@ -419,6 +419,8 b' class revlog(object):'
419 self._compengine = opts['compengine']
419 self._compengine = opts['compengine']
420 if 'zlib.level' in opts:
420 if 'zlib.level' in opts:
421 self._compengineopts['zlib.level'] = opts['zlib.level']
421 self._compengineopts['zlib.level'] = opts['zlib.level']
422 if 'zstd.level' in opts:
423 self._compengineopts['zstd.level'] = opts['zstd.level']
422 if 'maxdeltachainspan' in opts:
424 if 'maxdeltachainspan' in opts:
423 self._maxdeltachainspan = opts['maxdeltachainspan']
425 self._maxdeltachainspan = opts['maxdeltachainspan']
424 if self._mmaplargeindex and 'mmapindexthreshold' in opts:
426 if self._mmaplargeindex and 'mmapindexthreshold' in opts:
@@ -721,8 +721,12 b' class _zstdengine(compressionengine):'
721
721
722 def revlogcompressor(self, opts=None):
722 def revlogcompressor(self, opts=None):
723 opts = opts or {}
723 opts = opts or {}
724 return self.zstdrevlogcompressor(self._module,
724 level = opts.get('zstd.level')
725 level=opts.get('level', 3))
725 if level is None:
726 level = opts.get('level')
727 if level is None:
728 level = 3
729 return self.zstdrevlogcompressor(self._module, level=level)
726
730
727 compengines.register(_zstdengine())
731 compengines.register(_zstdengine())
728
732
@@ -138,3 +138,58 b' Test error cases'
138 abort: invalid value for `storage.revlog.zlib.level` config: 42
138 abort: invalid value for `storage.revlog.zlib.level` config: 42
139 [255]
139 [255]
140
140
141 checking zstd options
142 =====================
143
144 $ hg init zstd-level-default --config experimental.format.compression=zstd
145 $ hg init zstd-level-1 --config experimental.format.compression=zstd
146 $ cat << EOF >> zstd-level-1/.hg/hgrc
147 > [storage]
148 > revlog.zstd.level=1
149 > EOF
150 $ hg init zstd-level-22 --config experimental.format.compression=zstd
151 $ cat << EOF >> zstd-level-22/.hg/hgrc
152 > [storage]
153 > revlog.zstd.level=22
154 > EOF
155
156
157 $ commitone() {
158 > repo=$1
159 > cp $RUNTESTDIR/bundles/issue4438-r1.hg $repo/a
160 > hg -R $repo add $repo/a
161 > hg -R $repo commit -m some-commit
162 > }
163
164 $ for repo in zstd-level-default zstd-level-1 zstd-level-22; do
165 > commitone $repo
166 > done
167
168 $ $RUNTESTDIR/f -s zstd-*/.hg/store/data/*
169 zstd-level-1/.hg/store/data/a.i: size=4097
170 zstd-level-22/.hg/store/data/a.i: size=4091
171 zstd-level-default/.hg/store/data/a.i: size=4094
172
173 Test error cases
174
175 $ hg init zstd-level-invalid --config experimental.format.compression=zstd
176 $ cat << EOF >> zstd-level-invalid/.hg/hgrc
177 > [storage]
178 > revlog.zstd.level=foobar
179 > EOF
180 $ commitone zstd-level-invalid
181 abort: storage.revlog.zstd.level is not a valid integer ('foobar')
182 abort: storage.revlog.zstd.level is not a valid integer ('foobar')
183 [255]
184
185 $ hg init zstd-level-out-of-range --config experimental.format.compression=zstd
186 $ cat << EOF >> zstd-level-out-of-range/.hg/hgrc
187 > [storage]
188 > revlog.zstd.level=42
189 > EOF
190
191 $ commitone zstd-level-out-of-range
192 abort: invalid value for `storage.revlog.zstd.level` config: 42
193 abort: invalid value for `storage.revlog.zstd.level` config: 42
194 [255]
195
General Comments 0
You need to be logged in to leave comments. Login now