Differences between revisions 2 and 3
Revision 2 as of 2010-02-09 17:50:38
Size: 1254
Editor: WagnerBruna
Comment: adds disclaimer about the patch queue
Revision 3 as of 2010-02-09 17:54:09
Size: 1257
Editor: WagnerBruna
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
|| || total size (kb) || relative size <<BR>> (plain == 1) || 00manifest.d size || 00manifest.d relative size <<BR>> (plain == 1) ||
|| plain || 25708 || 1.00 || 8632k || 1.00 ||
|| || total size (kb) || relative size <<BR>> (plain == 1) || 00manifest.d size (kb) || 00manifest.d relative size <<BR>> (plain == 1) ||
|| plain || 25708 || 1.00 || 8632             || 1.00 ||
Line 20: Line 20:
http://bitbucket.org/wbruna/hg-zlibstream/  http://bitbucket.org/wbruna/hg-zlibstream/

Compressing revlog delta chunks reusing the zlib stream

Current revlog format compresses delta chunks separately from each other. The idea is to use the same compression object for a snapshot chunk and its delta chunks, simply sync-flushing the zlib stream for each chunk.

Test results

Mercurial crew (http://hg.intevation.org/mercurial/crew) - 10395 revisions

total size (kb)

relative size
(plain == 1)

00manifest.d size (kb)

00manifest.d relative size
(plain == 1)

plain

25708

1.00

8632

1.00

zlibstream applied

18400

0.72

4104

0.48

plain,
shrinked manifest

21740

0.85

4668

0.54

zlibstream applied,
shrinked manifest

16856

0.66

2560

0.30

Patch queue

<!> The code currently doesn't properly sets and checks the requires file, and the changes on revlog chunks take effect immediately on any new revisions: take care when running this on existing repositories!

http://bitbucket.org/wbruna/hg-zlibstream/

Mailing list threads

http://www.selenic.com/pipermail/mercurial-devel/2010-February/018564.html

RevlogSyncFlushProposal (last edited 2012-11-06 23:07:49 by abuehl)