Daniel Shahaf <d...@daniel.shahaf.name> writes:

> The documentation implies that CONFIG_OPTION_COMPRESSION can be used
> regardless of the filesystem format, …

> … but the code only reads CONFIG_OPTION_COMPRESSION in f8 filesystems.
>
> Given the docs as written, I would expect to be able to edit fsfs.conf
> and replace 'compression-level = 4' with 'compression = zlib-4' without
> doing an 'svnadmin upgrade'; so I think the 
> SVN_FS_FS__MIN_DELTIFICATION_FORMAT
> codepath should honour CONFIG_OPTION_COMPRESSION (and error out if it is
> set to "lz4").

Unless I am missing something subtle, it would be an incompatible change.

(For example, then the same fsfs.conf file in format 7 repository with
"compression=zlib-4" would result in different behavior, depending on
whether the repository is opened with Subversion 1.9 or 1.10.)

That's the reason why the option is currently implemented only for format 8.

But in the meanwhile, I think that I see the point that the documentation
doesn't mention this.  Perhaps, we could say something along the following
lines to avoid the potential confusion?

[[[
### After deltification, we compress the data to minimize on-disk size.
### These settings control the compression algorithm, which will be used in
### future revisions.  It can be used to either disable compression or to
### select between available algorithms (zlib, lz4).  zlib is a general-
### purpose compression algorithm.  lz4 is a fast compression algorithm
### which should be preferred for repositories with large and, possibly,
### incompressible files.  Note that the compression ratio of lz4 is
### usually lower than the one provided by zlib, but using it can
### significantly speed up commits as well as reading the data.
###
### In format 8 repositories created by Subversion 1.10, compression can
### be configured using the following option:
###   compression = none | lz4 | zlib | zlib-1 ... zlib-9
### For new formats, 'compression' option DEPRECATES the previously used
### 'compression-level' option (see below).  For compatibility, this
### deprecated option can still be used, and that will result in zlib
### compression with the corresponding compression level.
### The default value is 'zlib', which is currently equivalent to 'zlib-5'.
# compression = zlib
###
### In format 4-7 repositories, only zlib compression algorithm is
### supported.  Its compression level can be configured with the
### following option:
###   compression-level = 0 ... 9 (default is 5)
# compression-level = 5
]]]


Regards,
Evgeny Kotkov

Reply via email to