mercurial/pure/parsers.py
changeset 48497 2c6084f67a86
parent 48496 30741bbea550
child 48499 52034c42c09d
equal deleted inserted replaced
48496:30741bbea550 48497:2c6084f67a86
   878 class IndexChangelogV2(IndexObject2):
   878 class IndexChangelogV2(IndexObject2):
   879     index_format = revlog_constants.INDEX_ENTRY_CL_V2
   879     index_format = revlog_constants.INDEX_ENTRY_CL_V2
   880 
   880 
   881     def _unpack_entry(self, rev, data, r=True):
   881     def _unpack_entry(self, rev, data, r=True):
   882         items = self.index_format.unpack(data)
   882         items = self.index_format.unpack(data)
   883         entry = items[:3] + (rev, rev) + items[3:8]
   883         return (
   884         data_comp = items[8] & 3
   884             items[revlog_constants.INDEX_ENTRY_V2_IDX_OFFSET],
   885         sidedata_comp = (items[8] >> 2) & 3
   885             items[revlog_constants.INDEX_ENTRY_V2_IDX_COMPRESSED_LENGTH],
   886         return entry + (data_comp, sidedata_comp)
   886             items[revlog_constants.INDEX_ENTRY_V2_IDX_UNCOMPRESSED_LENGTH],
       
   887             rev,
       
   888             rev,
       
   889             items[revlog_constants.INDEX_ENTRY_V2_IDX_PARENT_1],
       
   890             items[revlog_constants.INDEX_ENTRY_V2_IDX_PARENT_2],
       
   891             items[revlog_constants.INDEX_ENTRY_V2_IDX_NODEID],
       
   892             items[revlog_constants.INDEX_ENTRY_V2_IDX_SIDEDATA_OFFSET],
       
   893             items[
       
   894                 revlog_constants.INDEX_ENTRY_V2_IDX_SIDEDATA_COMPRESSED_LENGTH
       
   895             ],
       
   896             items[revlog_constants.INDEX_ENTRY_V2_IDX_COMPRESSION_MODE] & 3,
       
   897             (items[revlog_constants.INDEX_ENTRY_V2_IDX_COMPRESSION_MODE] >> 2)
       
   898             & 3,
       
   899         )
   887 
   900 
   888     def _pack_entry(self, rev, entry):
   901     def _pack_entry(self, rev, entry):
   889         assert entry[3] == rev, entry[3]
   902 
   890         assert entry[4] == rev, entry[4]
   903         base = entry[revlog_constants.ENTRY_DELTA_BASE]
   891         data = entry[:3] + entry[5:10]
   904         link_rev = entry[revlog_constants.ENTRY_LINK_REV]
   892         data_comp = entry[10] & 3
   905         assert base == rev, (base, rev)
   893         sidedata_comp = (entry[11] & 3) << 2
   906         assert link_rev == rev, (link_rev, rev)
   894         data += (data_comp | sidedata_comp,)
   907         data = (
       
   908             entry[revlog_constants.ENTRY_DATA_OFFSET],
       
   909             entry[revlog_constants.ENTRY_DATA_COMPRESSED_LENGTH],
       
   910             entry[revlog_constants.ENTRY_DATA_UNCOMPRESSED_LENGTH],
       
   911             entry[revlog_constants.ENTRY_PARENT_1],
       
   912             entry[revlog_constants.ENTRY_PARENT_2],
       
   913             entry[revlog_constants.ENTRY_NODE_ID],
       
   914             entry[revlog_constants.ENTRY_SIDEDATA_OFFSET],
       
   915             entry[revlog_constants.ENTRY_SIDEDATA_COMPRESSED_LENGTH],
       
   916             entry[revlog_constants.ENTRY_DATA_COMPRESSION_MODE] & 3
       
   917             | (entry[revlog_constants.ENTRY_SIDEDATA_COMPRESSION_MODE] & 3)
       
   918             << 2,
       
   919         )
   895         return self.index_format.pack(*data)
   920         return self.index_format.pack(*data)
   896 
   921 
   897 
   922 
   898 def parse_index_devel_nodemap(data, inline):
   923 def parse_index_devel_nodemap(data, inline):
   899     """like parse_index2, but alway return a PersistentNodeMapIndexObject"""
   924     """like parse_index2, but alway return a PersistentNodeMapIndexObject"""