tests/simplestorerepo.py
changeset 37436 9d4f09bfe3ec
parent 37424 06674aab2b4c
child 37441 a3202fa83aff
equal deleted inserted replaced
37435:0c1b895511b9 37436:9d4f09bfe3ec
   241 
   241 
   242     def _processflags(self, text, flags, operation, raw=False):
   242     def _processflags(self, text, flags, operation, raw=False):
   243         if flags == 0:
   243         if flags == 0:
   244             return text, True
   244             return text, True
   245 
   245 
       
   246         if flags & ~revlog.REVIDX_KNOWN_FLAGS:
       
   247             raise error.RevlogError(_("incompatible revision flag '%#x'") %
       
   248                                     (flags & ~revlog.REVIDX_KNOWN_FLAGS))
       
   249 
   246         validatehash = True
   250         validatehash = True
   247         # Depending on the operation (read or write), the order might be
   251         # Depending on the operation (read or write), the order might be
   248         # reversed due to non-commutative transforms.
   252         # reversed due to non-commutative transforms.
   249         orderedflags = revlog.REVIDX_FLAGS_ORDER
   253         orderedflags = revlog.REVIDX_FLAGS_ORDER
   250         if operation == 'write':
   254         if operation == 'write':
   403     # Required by verify.
   407     # Required by verify.
   404     def checksize(self):
   408     def checksize(self):
   405         return 0, 0
   409         return 0, 0
   406 
   410 
   407     def add(self, text, meta, transaction, linkrev, p1, p2):
   411     def add(self, text, meta, transaction, linkrev, p1, p2):
   408         transaction.addbackup(self._indexpath)
       
   409 
       
   410         if meta or text.startswith(b'\1\n'):
   412         if meta or text.startswith(b'\1\n'):
   411             text = filelog.packmeta(meta, text)
   413             text = filelog.packmeta(meta, text)
   412 
   414 
   413         return self.addrevision(text, transaction, linkrev, p1, p2)
   415         return self.addrevision(text, transaction, linkrev, p1, p2)
   414 
   416 
   415     def addrevision(self, text, transaction, linkrev, p1, p2, node=None,
   417     def addrevision(self, text, transaction, linkrev, p1, p2, node=None,
   416                     flags=0):
   418                     flags=revlog.REVIDX_DEFAULT_FLAGS, cachedelta=None):
   417         validatenode(p1)
   419         validatenode(p1)
   418         validatenode(p2)
   420         validatenode(p2)
   419 
   421 
   420         if flags:
   422         if flags:
   421             node = node or revlog.hash(text, p1, p2)
   423             node = node or revlog.hash(text, p1, p2)
   428             return node
   430             return node
   429 
   431 
   430         if validatehash:
   432         if validatehash:
   431             self.checkhash(rawtext, node, p1=p1, p2=p2)
   433             self.checkhash(rawtext, node, p1=p1, p2=p2)
   432 
   434 
       
   435         return self._addrawrevision(node, rawtext, transaction, linkrev, p1, p2,
       
   436                                     flags)
       
   437 
       
   438     def _addrawrevision(self, node, rawtext, transaction, link, p1, p2, flags):
       
   439         transaction.addbackup(self._indexpath)
       
   440 
   433         path = b'/'.join([self._storepath, hex(node)])
   441         path = b'/'.join([self._storepath, hex(node)])
   434 
   442 
   435         self._svfs.write(path, text)
   443         self._svfs.write(path, rawtext)
   436 
   444 
   437         self._indexdata.append({
   445         self._indexdata.append({
   438             b'node': node,
   446             b'node': node,
   439             b'p1': p1,
   447             b'p1': p1,
   440             b'p2': p2,
   448             b'p2': p2,
   441             b'linkrev': linkrev,
   449             b'linkrev': link,
   442             b'flags': flags,
   450             b'flags': flags,
   443         })
   451         })
   444 
   452 
   445         self._reflectindexupdate()
   453         self._reflectindexupdate()
   446 
   454 
   455 
   463 
   456         transaction.addbackup(self._indexpath)
   464         transaction.addbackup(self._indexpath)
   457 
   465 
   458         for node, p1, p2, linknode, deltabase, delta, flags in deltas:
   466         for node, p1, p2, linknode, deltabase, delta, flags in deltas:
   459             linkrev = linkmapper(linknode)
   467             linkrev = linkmapper(linknode)
       
   468             flags = flags or revlog.REVIDX_DEFAULT_FLAGS
   460 
   469 
   461             nodes.append(node)
   470             nodes.append(node)
   462 
   471 
   463             if node in self._indexbynode:
   472             if node in self._indexbynode:
   464                 continue
   473                 continue
   467             if deltabase == nullid:
   476             if deltabase == nullid:
   468                 text = mdiff.patch(b'', delta)
   477                 text = mdiff.patch(b'', delta)
   469             else:
   478             else:
   470                 text = mdiff.patch(self.revision(deltabase), delta)
   479                 text = mdiff.patch(self.revision(deltabase), delta)
   471 
   480 
   472             self.addrevision(text, transaction, linkrev, p1, p2, flags)
   481             self._addrawrevision(node, text, transaction, linkrev, p1, p2,
       
   482                                  flags)
   473 
   483 
   474             if addrevisioncb:
   484             if addrevisioncb:
   475                 addrevisioncb(self, node)
   485                 addrevisioncb(self, node)
   476 
   486 
   477         return nodes
   487         return nodes