##// END OF EJS Templates
util: compression APIs to support revlog compression...
util: compression APIs to support revlog compression As part of "zstd all of the things," we need to teach revlogs to use non-zlib compression formats. Because we're routing all compression via the "compression manager" and "compression engine" APIs, we need to introduction functionality there for performing revlog operations. Ideally, revlog compression and decompression operations would be implemented in terms of simple "compress" and "decompress" primitives. However, there are a few considerations that make us want to have a specialized primitive for handling revlogs: 1) Performance. Revlogs tend to do compression and especially decompression operations in batches. Any overhead for e.g. instantiating a "context" for performing an operation can be noticed. For this reason, our "revlog compressor" primitive is reusable. For zstd, we reuse the same compression "context" for multiple operations. I've measured this to have a performance impact versus constructing new contexts for each operation. 2) Specialization. By having a primitive dedicated to revlog use, we can make revlog-specific choices and leave the door open for more functionality in the future. For example, the zstd revlog compressor may one day make use of dictionary compression. A future patch will introduce a decompress() on the compressor object. The code for the zlib compressor is basically copied from revlog.compress(). Although it doesn't handle the empty input case, the null first byte case, and the 'u' prefix case. These cases will continue to be handled in revlog.py once that code is ported to use this API.

File last commit:

r24054:fdf7794b default
r30794:31e1f0d4 default
Show More
index.tmpl
31 lines | 795 B | application/x-cheetah | CheetahLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {header}
<title>Mercurial repositories index</title>
</head>
<body>
<div class="container">
<div class="menu">
Steven Stallion
hgweb: support alternate logo url...
r13964 <a href="{logourl}">
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <img src="{staticurl|urlescape}{logoimg}" width=75 height=90 border=0 alt="mercurial" /></a>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </div>
<div class="main">
Angel Ezquerra <angel.ezquerra at gmail.com>
hgweb: add a "URL breadcrumb" to the index and repository pages...
r18258 <h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
<table class="bigtable">
Anton Shestakov
hgweb: replace implicit <tbody> with explicit <thead> where appropriate...
r24054 <thead>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <tr>
<th><a href="?sort={sort_name}">Name</a></th>
<th><a href="?sort={sort_description}">Description</a></th>
<th><a href="?sort={sort_contact}">Contact</a></th>
Dan Villiom Podlaski Christiansen
templates: rename `Last change' column in hgwebdir repository list....
r10301 <th><a href="?sort={sort_lastchange}">Last modified</a></th>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <th>&nbsp;</th>
Angel Ezquerra
hgweb, paper: add (Atom) subscribe links to the repository index...
r18201 <th>&nbsp;</th>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>
Anton Shestakov
hgweb: replace implicit <tbody> with explicit <thead> where appropriate...
r24054 </thead>
Alexander Plavin
hgweb: make stripes in repo list with CSS
r19450 <tbody class="stripes2">
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {entries%indexentry}
Alexander Plavin
hgweb: make stripes in repo list with CSS
r19450 </tbody>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </table>
</div>
</div>
{footer}