/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-03-05 07:32:38 UTC
  • mto: (7290.1.21 work)
  • mto: This revision was merged to the branch mainline in revision 7311.
  • Revision ID: jelmer@jelmer.uk-20190305073238-zlqn981opwnqsmzi
Add appveyor configuration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
import contextlib
18
 
import patiencediff
 
17
from __future__ import absolute_import
 
18
 
19
19
import shutil
20
20
import sys
21
21
import tempfile
29
29
    errors,
30
30
    osutils,
31
31
    patches,
 
32
    patiencediff,
32
33
    shelf,
33
34
    textfile,
34
35
    trace,
177
178
        tree, path = workingtree.WorkingTree.open_containing(directory)
178
179
        # Ensure that tree is locked for the lifetime of target_tree, as
179
180
        # target tree may be reading from the same dirstate.
180
 
        with tree.lock_tree_write():
 
181
        tree.lock_tree_write()
 
182
        try:
181
183
            target_tree = builtins._get_one_revision_tree('shelf2', revision,
182
184
                                                          tree.branch, tree)
183
185
            files = tree.safe_relpath_files(file_list)
184
186
            return klass(tree, target_tree, diff_writer, all, all, files,
185
187
                         message, destroy)
 
188
        finally:
 
189
            tree.unlock()
186
190
 
187
191
    def run(self):
188
192
        """Interactively shelve the changes."""
401
405
            else:
402
406
                shelf_id = manager.last_shelf()
403
407
                if shelf_id is None:
404
 
                    raise errors.CommandError(
 
408
                    raise errors.BzrCommandError(
405
409
                        gettext('No changes are shelved.'))
406
410
            apply_changes = True
407
411
            delete_shelf = True
456
460
 
457
461
    def run(self):
458
462
        """Perform the unshelving operation."""
459
 
        with contextlib.ExitStack() as exit_stack:
460
 
            exit_stack.enter_context(self.tree.lock_tree_write())
 
463
        self.tree.lock_tree_write()
 
464
        cleanups = [self.tree.unlock]
 
465
        try:
461
466
            if self.read_shelf:
462
467
                trace.note(gettext('Using changes with id "%d".') %
463
468
                           self.shelf_id)
464
469
                unshelver = self.manager.get_unshelver(self.shelf_id)
465
 
                exit_stack.callback(unshelver.finalize)
 
470
                cleanups.append(unshelver.finalize)
466
471
                if unshelver.message is not None:
467
472
                    trace.note(gettext('Message: %s') % unshelver.message)
468
473
                change_reporter = delta._ChangeReporter()
478
483
                self.manager.delete_shelf(self.shelf_id)
479
484
                trace.note(gettext('Deleted changes with id "%d".') %
480
485
                           self.shelf_id)
 
486
        finally:
 
487
            for cleanup in reversed(cleanups):
 
488
                cleanup()
481
489
 
482
490
    def write_diff(self, merger):
483
491
        """Write this operation's diff to self.write_diff_to."""