~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/shelf_ui.py

  • Committer: Andrew Bennetts
  • Date: 2011-02-25 08:45:27 UTC
  • mto: This revision was merged to the branch mainline in revision 5695.
  • Revision ID: andrew.bennetts@canonical.com-20110225084527-0ucp7p00d00hoqon
Add another test.

Show diffs side-by-side

added added

removed removed

Lines of Context:
154
154
 
155
155
    @classmethod
156
156
    def from_args(klass, diff_writer, revision=None, all=False, file_list=None,
157
 
                  message=None, directory='.', destroy=False):
 
157
                  message=None, directory=None, destroy=False):
158
158
        """Create a shelver from commandline arguments.
159
159
 
160
160
        The returned shelver wil have a work_tree that is locked and should
168
168
        :param destroy: Change the working tree without storing the shelved
169
169
            changes.
170
170
        """
 
171
        if directory is None:
 
172
            directory = u'.'
 
173
        elif file_list:
 
174
            file_list = [osutils.pathjoin(directory, f) for f in file_list]
171
175
        tree, path = workingtree.WorkingTree.open_containing(directory)
172
176
        # Ensure that tree is locked for the lifetime of target_tree, as
173
177
        # target tree may be reading from the same dirstate.
175
179
        try:
176
180
            target_tree = builtins._get_one_revision_tree('shelf2', revision,
177
181
                tree.branch, tree)
178
 
            files = builtins.safe_relpath_files(tree, file_list)
 
182
            files = tree.safe_relpath_files(file_list)
179
183
            return klass(tree, target_tree, diff_writer, all, all, files,
180
184
                         message, destroy)
181
185
        finally:
241
245
            new_tree = self.work_tree
242
246
        old_path = old_tree.id2path(file_id)
243
247
        new_path = new_tree.id2path(file_id)
244
 
        text_differ = diff.DiffText(old_tree, new_tree, diff_file)
 
248
        text_differ = diff.DiffText(old_tree, new_tree, diff_file,
 
249
            path_encoding=osutils.get_terminal_encoding())
245
250
        patch = text_differ.diff(file_id, old_path, new_path, 'file', 'file')
246
251
        diff_file.seek(0)
247
252
        return patches.parse_patch(diff_file)
492
497
        tt = tree_merger.make_preview_transform()
493
498
        new_tree = tt.get_preview_tree()
494
499
        if self.write_diff_to is None:
495
 
            self.write_diff_to = ui.ui_factory.make_output_stream()
496
 
        diff.show_diff_trees(merger.this_tree, new_tree, self.write_diff_to)
 
500
            self.write_diff_to = ui.ui_factory.make_output_stream(encoding_type='exact')
 
501
        path_encoding = osutils.get_diff_header_encoding()
 
502
        diff.show_diff_trees(merger.this_tree, new_tree, self.write_diff_to,
 
503
            path_encoding=path_encoding)
497
504
        tt.finalize()
498
505
 
499
506
    def show_changes(self, merger):