~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repository.py

  • Committer: Andrew Bennetts
  • Date: 2009-10-07 08:17:25 UTC
  • mto: This revision was merged to the branch mainline in revision 4734.
  • Revision ID: andrew.bennetts@canonical.com-20091007081725-4t3vkhher69a4k0j
Refactor to reduce duplication.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
""")
51
51
 
52
52
from bzrlib.decorators import needs_read_lock, needs_write_lock
 
53
from bzrlib.lock import _RelockDebugMixin
53
54
from bzrlib.inter import InterObject
54
55
from bzrlib.inventory import (
55
56
    Inventory,
856
857
# Repositories
857
858
 
858
859
 
859
 
class Repository(object):
 
860
class Repository(_RelockDebugMixin):
860
861
    """Repository holding history for one or more branches.
861
862
 
862
863
    The repository holds and retrieves historical information including
1309
1310
        self._fallback_repositories = []
1310
1311
        # An InventoryEntry cache, used during deserialization
1311
1312
        self._inventory_entry_cache = fifo_cache.FIFOCache(10*1024)
1312
 
        self._prev_lock = None
1313
1313
 
1314
1314
    def __repr__(self):
1315
1315
        if self._fallback_repositories:
1382
1382
        locked = self.is_locked()
1383
1383
        result = self.control_files.lock_write(token=token)
1384
1384
        if not locked:
1385
 
            if 'relock' in debug.debug_flags and self._prev_lock == 'w':
1386
 
                note('%r was write locked again', self)
1387
 
            self._prev_lock = 'w'
 
1385
            self._debug_lock('w')
1388
1386
            for repo in self._fallback_repositories:
1389
1387
                # Writes don't affect fallback repos
1390
1388
                repo.lock_read()
1395
1393
        locked = self.is_locked()
1396
1394
        self.control_files.lock_read()
1397
1395
        if not locked:
1398
 
            if 'relock' in debug.debug_flags and self._prev_lock == 'r':
1399
 
                note('%r was read locked again', self)
1400
 
            self._prev_lock = 'r'
 
1396
            self._debug_lock('r')
1401
1397
            for repo in self._fallback_repositories:
1402
1398
                repo.lock_read()
1403
1399
            self._refresh_data()