3368 if requirementsmod.REVLOGV2_REQUIREMENT not in self.requirements: |
3368 if requirementsmod.REVLOGV2_REQUIREMENT not in self.requirements: |
3369 # Only revlogv2 repos can want sidedata. |
3369 # Only revlogv2 repos can want sidedata. |
3370 return |
3370 return |
3371 self._wanted_sidedata.add(pycompat.bytestr(category)) |
3371 self._wanted_sidedata.add(pycompat.bytestr(category)) |
3372 |
3372 |
3373 def register_sidedata_computer(self, kind, category, keys, computer): |
3373 def register_sidedata_computer(self, kind, category, keys, computer, flags): |
3374 if kind not in revlogconst.ALL_KINDS: |
3374 if kind not in revlogconst.ALL_KINDS: |
3375 msg = _(b"unexpected revlog kind %r.") |
3375 msg = _(b"unexpected revlog kind '%s'.") |
3376 raise error.ProgrammingError(msg % kind) |
3376 raise error.ProgrammingError(msg % kind) |
3377 category = pycompat.bytestr(category) |
3377 category = pycompat.bytestr(category) |
3378 if category in self._sidedata_computers.get(kind, []): |
3378 if category in self._sidedata_computers.get(kind, []): |
3379 msg = _( |
3379 msg = _( |
3380 b"cannot register a sidedata computer twice for category '%s'." |
3380 b"cannot register a sidedata computer twice for category '%s'." |
3381 ) |
3381 ) |
3382 raise error.ProgrammingError(msg % category) |
3382 raise error.ProgrammingError(msg % category) |
3383 self._sidedata_computers.setdefault(kind, {}) |
3383 self._sidedata_computers.setdefault(kind, {}) |
3384 self._sidedata_computers[kind][category] = (keys, computer) |
3384 self._sidedata_computers[kind][category] = (keys, computer, flags) |
3385 |
3385 |
3386 |
3386 |
3387 # used to avoid circular references so destructors work |
3387 # used to avoid circular references so destructors work |
3388 def aftertrans(files): |
3388 def aftertrans(files): |
3389 renamefiles = [tuple(t) for t in files] |
3389 renamefiles = [tuple(t) for t in files] |