~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/controldir.py

  • Committer: Vincent Ladeuil
  • Date: 2012-01-18 14:09:19 UTC
  • mto: This revision was merged to the branch mainline in revision 6468.
  • Revision ID: v.ladeuil+lp@free.fr-20120118140919-rlvdrhpc0nq1lbwi
Change set/remove to require a lock for the branch config files.

This means that tests (or any plugin for that matter) do not requires an
explicit lock on the branch anymore to change a single option. This also
means the optimisation becomes "opt-in" and as such won't be as
spectacular as it may be and/or harder to get right (nothing fails
anymore).

This reduces the diff by ~300 lines.

Code/tests that were updating more than one config option is still taking
a lock to at least avoid some IOs and demonstrate the benefits through
the decreased number of hpss calls.

The duplication between BranchStack and BranchOnlyStack will be removed
once the same sharing is in place for local config files, at which point
the Stack class itself may be able to host the changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
394
394
            repository_to.fetch(source.repository, revision_id=revision_id)
395
395
            br_to = source.clone(self, revision_id=revision_id)
396
396
            if source.get_push_location() is None or remember:
397
 
                source.lock_write()
398
 
                try:
399
 
                    source.set_push_location(br_to.base)
400
 
                finally:
401
 
                    source.unlock()
 
397
                # FIXME: Should be done only if we succeed ? -- vila 2012-01-18
 
398
                source.set_push_location(br_to.base)
402
399
            push_result.stacked_on = None
403
400
            push_result.branch_push_result = None
404
401
            push_result.old_revno = None
409
406
        else:
410
407
            # We have successfully opened the branch, remember if necessary:
411
408
            if source.get_push_location() is None or remember:
412
 
                source.lock_write()
413
 
                try:
414
 
                    source.set_push_location(br_to.base)
415
 
                finally:
416
 
                    source.unlock()
 
409
                # FIXME: Should be done only if we succeed ? -- vila 2012-01-18
 
410
                source.set_push_location(br_to.base)
417
411
            try:
418
412
                tree_to = self.open_workingtree()
419
413
            except errors.NotLocalUrl: