comparison mercurial/revlogutils/constants.py @ 40047:8e398628a3f2

repository: define and use revision flag constants Revlogs have a per-revision 2 byte field holding integer flags that define how revision data should be interpreted. For historical reasons, these integer values are sent verbatim on the wire protocol as part of changegroup data. From a semantic standpoint, the flags that go out over the wire are different from the flags stored internally by revlogs. Failure to establish this semantic distinction creates unwanted strong coupling between revlog's internals and the wire protocol. This commit establishes new constants on the repository module that define the revision flags used by the wire protocol (and by some internal storage APIs, sadly). The changegroups internals documentation has been updated to document them explicitly. Various references throughout the repo now use the repository constants instead of the revlog constants. This is done to make it clear that we're operating on generic revision data and this isn't tied to revlogs. Differential Revision: https://phab.mercurial-scm.org/D4860
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 03 Oct 2018 12:57:01 -0700
parents b66ea3fc3a86
children e7a2cc84dbc0
comparison
equal deleted inserted replaced
40046:50700a025953 40047:8e398628a3f2
8 """Helper class to compute deltas stored inside revlogs""" 8 """Helper class to compute deltas stored inside revlogs"""
9 9
10 from __future__ import absolute_import 10 from __future__ import absolute_import
11 11
12 from .. import ( 12 from .. import (
13 repository,
13 util, 14 util,
14 ) 15 )
15 16
16 # revlog header flags 17 # revlog header flags
17 REVLOGV0 = 0 18 REVLOGV0 = 0
26 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS 27 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS
27 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA 28 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA
28 REVLOGV2_FLAGS = REVLOGV1_FLAGS 29 REVLOGV2_FLAGS = REVLOGV1_FLAGS
29 30
30 # revlog index flags 31 # revlog index flags
31 REVIDX_ISCENSORED = (1 << 15) # revision has censor metadata, must be verified 32
32 REVIDX_ELLIPSIS = (1 << 14) # revision hash does not match data (narrowhg) 33 # For historical reasons, revlog's internal flags were exposed via the
33 REVIDX_EXTSTORED = (1 << 13) # revision data is stored externally 34 # wire protocol and are even exposed in parts of the storage APIs.
35
36 # revision has censor metadata, must be verified
37 REVIDX_ISCENSORED = repository.REVISION_FLAG_CENSORED
38 # revision hash does not match data (narrowhg)
39 REVIDX_ELLIPSIS = repository.REVISION_FLAG_ELLIPSIS
40 # revision data is stored externally
41 REVIDX_EXTSTORED = repository.REVISION_FLAG_EXTSTORED
34 REVIDX_DEFAULT_FLAGS = 0 42 REVIDX_DEFAULT_FLAGS = 0
35 # stable order in which flags need to be processed and their processors applied 43 # stable order in which flags need to be processed and their processors applied
36 REVIDX_FLAGS_ORDER = [ 44 REVIDX_FLAGS_ORDER = [
37 REVIDX_ISCENSORED, 45 REVIDX_ISCENSORED,
38 REVIDX_ELLIPSIS, 46 REVIDX_ELLIPSIS,