##// END OF EJS Templates
transaction: change list of journal entries into a dictionary...
transaction: change list of journal entries into a dictionary The transaction object used to keep a mapping table of path names to journal entries and a list of journal entries consisting of path and file offset to truncate on rollback. The offsets are used in three cases. repair.strip and rollback process all of them in one go, but they care about the order. For them, it is perfectly reasonable to read the journal back from disk as both operations already involve at least one system call per journal entry. The other consumer is the revlog logic for moving from inline to external data storage. It doesn't care about the order of the journal and just needs to original offset stored. Further optimisations are possible here to move the in-memory journal to a set(), but without memoisation of the original revlog size this could turn it into O(n^2) behavior in worst case when many revlogs need to migrated. Differential Revision: https://phab.mercurial-scm.org/D9277

File last commit:

r43347:687b865b default
r46475:5b1214c1 default
Show More
util.py
38 lines | 1.0 KiB | text/x-python | PythonLexer
Pulkit Goyal
interfaceutil: move to interfaces/...
r43079 # util.py - Utilities for declaring interfaces.
#
# Copyright 2018 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
# zope.interface imposes a run-time cost due to module import overhead and
# bookkeeping for declaring interfaces. So, we use stubs for various
# zope.interface primitives unless instructed otherwise.
from __future__ import absolute_import
Augie Fackler
formatting: blacken the codebase...
r43346 from .. import encoding
Pulkit Goyal
interfaceutil: move to interfaces/...
r43079
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if encoding.environ.get(b'HGREALINTERFACES'):
Augie Fackler
formatting: blacken the codebase...
r43346 from ..thirdparty.zope import interface as zi
Pulkit Goyal
interfaceutil: move to interfaces/...
r43079
Attribute = zi.Attribute
Interface = zi.Interface
implementer = zi.implementer
else:
Augie Fackler
formatting: blacken the codebase...
r43346
Pulkit Goyal
interfaceutil: move to interfaces/...
r43079 class Attribute(object):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 def __init__(self, __name__, __doc__=b''):
Pulkit Goyal
interfaceutil: move to interfaces/...
r43079 pass
class Interface(object):
Augie Fackler
formatting: blacken the codebase...
r43346 def __init__(
self, name, bases=(), attrs=None, __doc__=None, __module__=None
):
Pulkit Goyal
interfaceutil: move to interfaces/...
r43079 pass
def implementer(*ifaces):
def wrapper(cls):
return cls
return wrapper