]> git.ipfire.org Git - thirdparty/git.git/commit - cache.h
Custom compression levels for objects and packs
authorDana How <danahow@gmail.com>
Wed, 9 May 2007 20:56:50 +0000 (13:56 -0700)
committerJunio C Hamano <junkio@cox.net>
Thu, 10 May 2007 22:23:09 +0000 (15:23 -0700)
commit960ccca6803c9fb57429d43572a9545a96107e32
treefcacfbd86e9411c75313132a14562c35c2f83ca9
parent479b56ba50144b30f28c5b225d412125c07def9f
Custom compression levels for objects and packs

Add config variables pack.compression and core.loosecompression ,
and switch --compression=level to pack-objects.

Loose objects will be compressed using core.loosecompression if set,
else core.compression if set, else Z_BEST_SPEED.
Packed objects will be compressed using --compression=level if seen,
else pack.compression if set, else core.compression if set,
else Z_DEFAULT_COMPRESSION.  This is the "pack compression level".

Loose objects added to a pack undeltified will be recompressed
to the pack compression level if it is unequal to the current
loose compression level by the preceding rules,  or if the loose
object was written while core.legacyheaders = true.  Newly
deltified loose objects are always compressed to the current
pack compression level.

Previously packed objects added to a pack are recompressed
to the current pack compression level exactly when their
deltification status changes,  since the previous pack data
cannot be reused.

In either case,  the --no-reuse-object switch from the first
patch below will always force recompression to the current pack
compression level,  instead of assuming the pack compression level
hasn't changed and pack data can be reused when possible.

This applies on top of the following patches from Nicolas Pitre:
[PATCH] allow for undeltified objects not to be reused
[PATCH] make "repack -f" imply "pack-objects --no-reuse-object"

Signed-off-by: Dana L. How <danahow@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/config.txt
Documentation/git-pack-objects.txt
builtin-pack-objects.c
cache.h
config.c
csum-file.c
csum-file.h
environment.c