##// END OF EJS Templates
revlog: unify checks for supported flag...
marmoute -
r48004:0e9105bf default
parent child Browse files
Show More
@@ -46,6 +46,7 b' from .revlogutils.constants import ('
46 REVLOG_DEFAULT_FLAGS,
46 REVLOG_DEFAULT_FLAGS,
47 REVLOG_DEFAULT_FORMAT,
47 REVLOG_DEFAULT_FORMAT,
48 REVLOG_DEFAULT_VERSION,
48 REVLOG_DEFAULT_VERSION,
49 SUPPORTED_FLAGS,
49 )
50 )
50 from .revlogutils.flagutil import (
51 from .revlogutils.flagutil import (
51 REVIDX_DEFAULT_FLAGS,
52 REVIDX_DEFAULT_FLAGS,
@@ -487,33 +488,24 b' class revlog(object):'
487 self._format_flags = header & ~0xFFFF
488 self._format_flags = header & ~0xFFFF
488 self._format_version = header & 0xFFFF
489 self._format_version = header & 0xFFFF
489
490
490 if self._format_version == REVLOGV0:
491 supported_flags = SUPPORTED_FLAGS.get(self._format_version)
491 if self._format_flags:
492 if supported_flags is None:
493 msg = _(b'unknown version (%d) in revlog %s')
494 msg %= (self._format_version, self.display_id)
495 raise error.RevlogError(msg)
496 elif self._format_flags & ~supported_flags:
492 msg = _(b'unknown flags (%#04x) in version %d revlog %s')
497 msg = _(b'unknown flags (%#04x) in version %d revlog %s')
493 display_flag = self._format_flags >> 16
498 display_flag = self._format_flags >> 16
494 msg %= (display_flag, self._format_version, self.display_id)
499 msg %= (display_flag, self._format_version, self.display_id)
495 raise error.RevlogError(msg)
500 raise error.RevlogError(msg)
496
501
502 if self._format_version == REVLOGV0:
497 self._inline = False
503 self._inline = False
498 self._generaldelta = False
504 self._generaldelta = False
499
500 elif self._format_version == REVLOGV1:
505 elif self._format_version == REVLOGV1:
501 if self._format_flags & ~REVLOGV1_FLAGS:
502 msg = _(b'unknown flags (%#04x) in version %d revlog %s')
503 display_flag = self._format_flags >> 16
504 msg %= (display_flag, self._format_version, self.display_id)
505 raise error.RevlogError(msg)
506
507 self._inline = self._format_flags & FLAG_INLINE_DATA
506 self._inline = self._format_flags & FLAG_INLINE_DATA
508 self._generaldelta = self._format_flags & FLAG_GENERALDELTA
507 self._generaldelta = self._format_flags & FLAG_GENERALDELTA
509
510 elif self._format_version == REVLOGV2:
508 elif self._format_version == REVLOGV2:
511 if self._format_flags & ~REVLOGV2_FLAGS:
512 msg = _(b'unknown flags (%#04x) in version %d revlog %s')
513 display_flag = self._format_flags >> 16
514 msg %= (display_flag, self._format_version, self.display_id)
515 raise error.RevlogError(msg)
516
517 # There is a bug in the transaction handling when going from an
509 # There is a bug in the transaction handling when going from an
518 # inline revlog to a separate index and data file. Turn it off until
510 # inline revlog to a separate index and data file. Turn it off until
519 # it's fixed, since v2 revlogs sometimes get rewritten on exchange.
511 # it's fixed, since v2 revlogs sometimes get rewritten on exchange.
@@ -523,11 +515,8 b' class revlog(object):'
523 self._generaldelta = True
515 self._generaldelta = True
524 # revlog-v2 has built in sidedata support
516 # revlog-v2 has built in sidedata support
525 self.hassidedata = True
517 self.hassidedata = True
526
527 else:
518 else:
528 msg = _(b'unknown version (%d) in revlog %s')
519 assert False, 'unreachable'
529 msg %= (self._format_version, self.display_id)
530 raise error.RevlogError(msg)
531
520
532 index_data = entry_data
521 index_data = entry_data
533 self._indexfile = entry_point
522 self._indexfile = entry_point
@@ -45,6 +45,7 b' FLAG_GENERALDELTA = 1 << 17'
45 REVLOG_DEFAULT_FLAGS = FLAG_INLINE_DATA
45 REVLOG_DEFAULT_FLAGS = FLAG_INLINE_DATA
46 REVLOG_DEFAULT_FORMAT = REVLOGV1
46 REVLOG_DEFAULT_FORMAT = REVLOGV1
47 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS
47 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS
48 REVLOGV0_FLAGS = 0
48 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA
49 REVLOGV1_FLAGS = FLAG_INLINE_DATA | FLAG_GENERALDELTA
49 REVLOGV2_FLAGS = FLAG_INLINE_DATA
50 REVLOGV2_FLAGS = FLAG_INLINE_DATA
50
51
@@ -113,4 +114,10 b' REVIDX_FLAGS_ORDER = ['
113 # bitmark for flags that could cause rawdata content change
114 # bitmark for flags that could cause rawdata content change
114 REVIDX_RAWTEXT_CHANGING_FLAGS = REVIDX_ISCENSORED | REVIDX_EXTSTORED
115 REVIDX_RAWTEXT_CHANGING_FLAGS = REVIDX_ISCENSORED | REVIDX_EXTSTORED
115
116
117 SUPPORTED_FLAGS = {
118 REVLOGV0: REVLOGV0_FLAGS,
119 REVLOGV1: REVLOGV1_FLAGS,
120 REVLOGV2: REVLOGV2_FLAGS,
121 }
122
116 SPARSE_REVLOG_MAX_CHAIN_LENGTH = 1000
123 SPARSE_REVLOG_MAX_CHAIN_LENGTH = 1000
General Comments 0
You need to be logged in to leave comments. Login now