comparison mercurial/revlogutils/constants.py @ 41202:e7a2cc84dbc0

revlog: always enable generaldelta on version 2 revlogs This commit starts the process of diverging version 2 revlogs from version 1 revlogs. generaldelta is a useful feature and has been enabled by default for ages. I can't think of a good reason why the feature should be disabled. Yes, it is true changelogs today don't have generaldelta enabled. But that's because they don't have delta chains enabled, so generaldelta makes no sense there. This commit makes generaldelta always enabled on version 2 revlogs. As part of this, one-off code in changelog.py mucking with revlog.version had to be made conditional on the revlog version, as we don't want to change revlog feature flags on version 2 revlogs. The fact this code exists is horrible and stems from revlog options being shared by the opener. We probably want a better API here. But that can wait for another patch. Differential Revision: https://phab.mercurial-scm.org/D5561
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 09 Jan 2019 17:41:36 -0800
parents 8e398628a3f2
children 92ac6b1697a7
comparison
equal deleted inserted replaced
41201:6439cefaeb64 41202:e7a2cc84dbc0
18 REVLOGV0 = 0 18 REVLOGV0 = 0
19 REVLOGV1 = 1 19 REVLOGV1 = 1
20 # Dummy value until file format is finalized. 20 # Dummy value until file format is finalized.
21 # Reminder: change the bounds check in revlog.__init__ when this is changed. 21 # Reminder: change the bounds check in revlog.__init__ when this is changed.
22 REVLOGV2 = 0xDEAD 22 REVLOGV2 = 0xDEAD
23 # Shared across v1 and v2.
23 FLAG_INLINE_DATA = (1 << 16) 24 FLAG_INLINE_DATA = (1 << 16)
25 # Only used by v1, implied by v2.
24 FLAG_GENERALDELTA = (1 << 17) 26 FLAG_GENERALDELTA = (1 << 17)
25 REVLOG_DEFAULT_FLAGS = FLAG_INLINE_DATA 27 REVLOG_DEFAULT_FLAGS = FLAG_INLINE_DATA
26 REVLOG_DEFAULT_FORMAT = REVLOGV1 28 REVLOG_DEFAULT_FORMAT = REVLOGV1
27 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS 29 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS
28 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA 30 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA
29 REVLOGV2_FLAGS = REVLOGV1_FLAGS 31 REVLOGV2_FLAGS = FLAG_INLINE_DATA
30 32
31 # revlog index flags 33 # revlog index flags
32 34
33 # For historical reasons, revlog's internal flags were exposed via the 35 # For historical reasons, revlog's internal flags were exposed via the
34 # wire protocol and are even exposed in parts of the storage APIs. 36 # wire protocol and are even exposed in parts of the storage APIs.