Пример #1
0
 def _processflags(self, text, flags, operation, raw=False):
     # mostly copied from hg/mercurial/revlog.py
     validatehash = True
     orderedflags = revlog.REVIDX_FLAGS_ORDER
     if operation == "write":
         orderedflags = reversed(orderedflags)
     for flag in orderedflags:
         if flag & flags:
             vhash = True
             if flag not in revlog._flagprocessors:
                 message = _("missing processor for flag '%#x'") % flag
                 raise revlog.RevlogError(message)
             readfunc, writefunc, rawfunc = revlog._flagprocessors[flag]
             if raw:
                 vhash = rawfunc(self, text)
             elif operation == "read":
                 text, vhash = readfunc(self, text)
             elif operation == "write":
                 text, vhash = writefunc(self, text)
             validatehash = validatehash and vhash
     return text, validatehash
Пример #2
0
    def addrevision(
        self,
        text,
        transaction,
        linknode,
        p1,
        p2,
        cachedelta=None,
        node=None,
        flags=revlog.REVIDX_DEFAULT_FLAGS,
    ):
        # text passed to "addrevision" includes hg filelog metadata header
        if node is None:
            node = revlog.hash(text, p1, p2)

        meta, metaoffset = filelog.parsemeta(text)
        rawtext, validatehash = self._processflags(text, flags, "write")

        if len(rawtext) > _maxentrysize:
            raise revlog.RevlogError(
                _("%s: size of %s exceeds maximum size of %s")
                % (
                    self.filename,
                    util.bytecount(len(rawtext)),
                    util.bytecount(_maxentrysize),
                )
            )

        return self.addrawrevision(
            rawtext,
            transaction,
            linknode,
            p1,
            p2,
            node,
            flags,
            cachedelta,
            _metatuple=(meta, metaoffset),
        )