##// END OF EJS Templates
changelog: ensure changelog._delaybuf is initialized...
changelog: ensure changelog._delaybuf is initialized The ``localrepo.writepending`` method is using the ``changelog._delaybuff`` attribute to know if it has anything to do. However the ``changelog._delaybuff`` is never initialised at ``__init__`` time. This can lead to crash when using bundle2 for part that never touch the changelog. We simply initialize it to its base value. This is scheduled for stable as it both trivial and blocking for experimenting with bundle2.

File last commit:

r20244:47d08436 default
r21544:667df8f4 stable
Show More
lock-checker.py
39 lines | 1.3 KiB | text/x-python | PythonLexer
Augie Fackler
lock-checker: new contrib extension based on work done by Mads...
r17669 """Extension to verify locks are obtained in the required places.
This works by wrapping functions that should be surrounded by a lock
and asserting the lock is held. Missing locks are called out with a
traceback printed to stderr.
This currently only checks store locks, not working copy locks.
"""
import os
Mads Kiilerich
util: introduce util.debugstacktrace for showing a stack trace without crashing...
r20244 from mercurial import util
Augie Fackler
lock-checker: new contrib extension based on work done by Mads...
r17669
def _checklock(repo):
l = repo._lockref and repo._lockref()
if l is None or not l.held:
Mads Kiilerich
util: introduce util.debugstacktrace for showing a stack trace without crashing...
r20244 util.debugstacktrace('missing lock', skip=1)
Augie Fackler
lock-checker: new contrib extension based on work done by Mads...
r17669
def reposetup(ui, repo):
orig = repo.__class__
class lockcheckrepo(repo.__class__):
def _writejournal(self, *args, **kwargs):
_checklock(self)
return orig._writejournal(self, *args, **kwargs)
def transaction(self, *args, **kwargs):
_checklock(self)
return orig.transaction(self, *args, **kwargs)
# TODO(durin42): kiilerix had a commented-out lock check in
Mads Kiilerich
spelling: fix minor spell checker issues
r17738 # _writebranchcache and _writerequirements
Augie Fackler
lock-checker: new contrib extension based on work done by Mads...
r17669
def _tag(self, *args, **kwargs):
_checklock(self)
return orig._tag(self, *args, **kwargs)
def write(self, *args, **kwargs):
assert os.path.lexists(self._join('.hg/wlock'))
return orig.write(self, *args, **kwargs)
repo.__class__ = lockcheckrepo