mercurial/revlog.py
changeset 47037 d57386e5c80e
parent 47036 5e64c93d5f94
child 47038 724db234b790
equal deleted inserted replaced
47036:5e64c93d5f94 47037:d57386e5c80e
   264     def __getitem__(self, i):
   264     def __getitem__(self, i):
   265         if i == -1:
   265         if i == -1:
   266             return (0, 0, 0, -1, -1, -1, -1, sha1nodeconstants.nullid)
   266             return (0, 0, 0, -1, -1, -1, -1, sha1nodeconstants.nullid)
   267         return list.__getitem__(self, i)
   267         return list.__getitem__(self, i)
   268 
   268 
   269     def entry_binary(self, rev, header):
   269     def entry_binary(self, rev):
   270         """return the raw binary string representing a revision"""
   270         """return the raw binary string representing a revision"""
   271         entry = self[rev]
   271         entry = self[rev]
   272         if gettype(entry[0]):
   272         if gettype(entry[0]):
   273             raise error.RevlogError(
   273             raise error.RevlogError(
   274                 _(b'index entry flags need revlog version 1')
   274                 _(b'index entry flags need revlog version 1')
   281             self[entry[5]][7],
   281             self[entry[5]][7],
   282             self[entry[6]][7],
   282             self[entry[6]][7],
   283             entry[7],
   283             entry[7],
   284         )
   284         )
   285         return INDEX_ENTRY_V0.pack(*e2)
   285         return INDEX_ENTRY_V0.pack(*e2)
       
   286 
       
   287     def pack_header(self, header):
       
   288         """Pack header information in binary"""
       
   289         return b''
   286 
   290 
   287 
   291 
   288 def parse_index_v0(data, inline):
   292 def parse_index_v0(data, inline):
   289     s = INDEX_ENTRY_V0.size
   293     s = INDEX_ENTRY_V0.size
   290     index = []
   294     index = []
  2039 
  2043 
  2040         with self._indexfp(b'w') as fp:
  2044         with self._indexfp(b'w') as fp:
  2041             self.version &= ~FLAG_INLINE_DATA
  2045             self.version &= ~FLAG_INLINE_DATA
  2042             self._inline = False
  2046             self._inline = False
  2043             for i in self:
  2047             for i in self:
  2044                 e = self.index.entry_binary(i, self.version)
  2048                 e = self.index.entry_binary(i)
       
  2049                 if i == 0:
       
  2050                     header = self.index.pack_header(self.version)
       
  2051                     e = header + e
  2045                 fp.write(e)
  2052                 fp.write(e)
  2046 
  2053 
  2047             # the temp file replace the real index when we exit the context
  2054             # the temp file replace the real index when we exit the context
  2048             # manager
  2055             # manager
  2049 
  2056 
  2361 
  2368 
  2362         if self.version & 0xFFFF != REVLOGV2:
  2369         if self.version & 0xFFFF != REVLOGV2:
  2363             e = e[:8]
  2370             e = e[:8]
  2364 
  2371 
  2365         self.index.append(e)
  2372         self.index.append(e)
  2366         entry = self.index.entry_binary(curr, self.version)
  2373         entry = self.index.entry_binary(curr)
       
  2374         if curr == 0:
       
  2375             header = self.index.pack_header(self.version)
       
  2376             entry = header + entry
  2367         self._writeentry(
  2377         self._writeentry(
  2368             transaction,
  2378             transaction,
  2369             ifh,
  2379             ifh,
  2370             dfh,
  2380             dfh,
  2371             entry,
  2381             entry,
  3214         with self._indexfp(b'w+') as fp:
  3224         with self._indexfp(b'w+') as fp:
  3215             fp.seek(startrev * self.index.entry_size)
  3225             fp.seek(startrev * self.index.entry_size)
  3216             for i, entry in enumerate(new_entries):
  3226             for i, entry in enumerate(new_entries):
  3217                 rev = startrev + i
  3227                 rev = startrev + i
  3218                 self.index.replace_sidedata_info(rev, entry[8], entry[9])
  3228                 self.index.replace_sidedata_info(rev, entry[8], entry[9])
  3219                 packed = self.index.entry_binary(rev, self.version)
  3229                 packed = self.index.entry_binary(rev)
       
  3230                 if rev == 0:
       
  3231                     header = self.index.pack_header(self.version)
       
  3232                     packed = header + packed
  3220                 fp.write(packed)
  3233                 fp.write(packed)