Note:

This page is primarily intended for developers of Mercurial.

Revlog version 2

Status: Project

Main proponents: Raphaël Gomès, Pierre-Yves David, Simon Sapin

/!\ This is a speculative project and does not represent any firm decisions on future behavior.

There is already a planned V2 format, but it's been left untouched for a while, and I'm struggling to find much info about what it was trying to achieve. If any of the developers involved in that effort want to join in and tell us more about their findings, it would be very much appreciated.

1. Goal

The current revlog format (RevlogNG, henceforth Revlogv1 or v1) has some known limitations and carries too little information for some of the features Mercurial tries to offer to perform well enough. A new version of the revlog will try to add new information and fix as many of the identified performance issues, while not introducing new ones.

2. Detailed description

2.1. Identified issues with v1

They was also previous discussion on the subject:

2.2. New features

2.3. Implied requirements

V2 implies generaldelta and sparse-revlog

2.4. V1 format

For reference purpose

flatten out we have:

aaaaaa bb cccc dddd eeee ffff gggg hhhh iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

64 bytes total

2.5. V2 format

There is no information we want to get rid of from v1 in v2 that I know of, so this change will be purely additive (modulo potential reordering):

aaaaaa bb cccc dddd eeee ffff gggg hhhh iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii jjjjjjjj kkkk llllllll mmmm xxxxxxxx

3. Roadmap

TODO

4. See Also


CategoryDeveloper CategoryNewFeatures

RevlogV2Plan (last edited 2021-03-12 00:06:47 by Pierre-YvesDavid)