~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repository.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-04-13 05:06:23 UTC
  • mfrom: (2279.7.13 bzr.dev.hpss.api.changes)
  • Revision ID: pqm@pqm.ubuntu.com-20070413050623-10v4wozs1tu04kcu
(Andrew Bennetts, Robert Collins) Add a 'token' argument to lock_write.

Show diffs side-by-side

added added

removed removed

Lines of Context:
231
231
    def is_locked(self):
232
232
        return self.control_files.is_locked()
233
233
 
234
 
    def lock_write(self):
235
 
        self.control_files.lock_write()
 
234
    def lock_write(self, token=None):
 
235
        """Lock this repository for writing.
 
236
        
 
237
        :param token: if this is already locked, then lock_write will fail
 
238
            unless the token matches the existing lock.
 
239
        :returns: a token if this instance supports tokens, otherwise None.
 
240
        :raises TokenLockingNotSupported: when a token is given but this
 
241
            instance doesn't support using token locks.
 
242
        :raises MismatchedToken: if the specified token doesn't match the token
 
243
            of the existing lock.
 
244
 
 
245
        A token should be passed in if you know that you have locked the object
 
246
        some other way, and need to synchronise this object's state with that
 
247
        fact.
 
248
 
 
249
        XXX: this docstring is duplicated in many places, e.g. lockable_files.py
 
250
        """
 
251
        return self.control_files.lock_write(token=token)
236
252
 
237
253
    def lock_read(self):
238
254
        self.control_files.lock_read()
240
256
    def get_physical_lock_status(self):
241
257
        return self.control_files.get_physical_lock_status()
242
258
 
 
259
    def leave_lock_in_place(self):
 
260
        """Tell this repository not to release the physical lock when this
 
261
        object is unlocked.
 
262
        
 
263
        If lock_write doesn't return a token, then this method is not supported.
 
264
        """
 
265
        self.control_files.leave_in_place()
 
266
 
 
267
    def dont_leave_lock_in_place(self):
 
268
        """Tell this repository to release the physical lock when this
 
269
        object is unlocked, even if it didn't originally acquire it.
 
270
 
 
271
        If lock_write doesn't return a token, then this method is not supported.
 
272
        """
 
273
        self.control_files.dont_leave_in_place()
 
274
 
243
275
    @needs_read_lock
244
276
    def gather_stats(self, revid=None, committers=None):
245
277
        """Gather statistics from a revision id.