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""" |