/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/shelf_ui.py

  • Committer: Jelmer Vernooij
  • Date: 2019-06-03 23:48:08 UTC
  • mfrom: (7316 work)
  • mto: This revision was merged to the branch mainline in revision 7328.
  • Revision ID: jelmer@jelmer.uk-20190603234808-15yk5c7054tj8e2b
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
 
26
26
from . import (
27
27
    builtins,
28
 
    cleanup,
29
28
    delta,
30
29
    diff,
31
30
    errors,
179
178
        tree, path = workingtree.WorkingTree.open_containing(directory)
180
179
        # Ensure that tree is locked for the lifetime of target_tree, as
181
180
        # target tree may be reading from the same dirstate.
182
 
        with tree.lock_tree_write():
 
181
        tree.lock_tree_write()
 
182
        try:
183
183
            target_tree = builtins._get_one_revision_tree('shelf2', revision,
184
184
                                                          tree.branch, tree)
185
185
            files = tree.safe_relpath_files(file_list)
186
186
            return klass(tree, target_tree, diff_writer, all, all, files,
187
187
                         message, destroy)
 
188
        finally:
 
189
            tree.unlock()
188
190
 
189
191
    def run(self):
190
192
        """Interactively shelve the changes."""
458
460
 
459
461
    def run(self):
460
462
        """Perform the unshelving operation."""
461
 
        with cleanup.ExitStack() as exit_stack:
462
 
            exit_stack.enter_context(self.tree.lock_tree_write())
 
463
        self.tree.lock_tree_write()
 
464
        cleanups = [self.tree.unlock]
 
465
        try:
463
466
            if self.read_shelf:
464
467
                trace.note(gettext('Using changes with id "%d".') %
465
468
                           self.shelf_id)
466
469
                unshelver = self.manager.get_unshelver(self.shelf_id)
467
 
                exit_stack.callback(unshelver.finalize)
 
470
                cleanups.append(unshelver.finalize)
468
471
                if unshelver.message is not None:
469
472
                    trace.note(gettext('Message: %s') % unshelver.message)
470
473
                change_reporter = delta._ChangeReporter()
480
483
                self.manager.delete_shelf(self.shelf_id)
481
484
                trace.note(gettext('Deleted changes with id "%d".') %
482
485
                           self.shelf_id)
 
486
        finally:
 
487
            for cleanup in reversed(cleanups):
 
488
                cleanup()
483
489
 
484
490
    def write_diff(self, merger):
485
491
        """Write this operation's diff to self.write_diff_to."""