/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/delta.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-16 23:19:12 UTC
  • mfrom: (7180 work)
  • mto: This revision was merged to the branch mainline in revision 7294.
  • Revision ID: jelmer@jelmer.uk-20181116231912-e043vpq22bdkxa6q
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
 
59
59
    The lists are normally sorted when the delta is created.
60
60
    """
 
61
 
61
62
    def __init__(self):
62
63
        self.added = []
63
64
        self.removed = []
72
73
        if not isinstance(other, TreeDelta):
73
74
            return False
74
75
        return self.added == other.added \
75
 
               and self.removed == other.removed \
76
 
               and self.renamed == other.renamed \
77
 
               and self.modified == other.modified \
78
 
               and self.unchanged == other.unchanged \
79
 
               and self.kind_changed == other.kind_changed \
80
 
               and self.unversioned == other.unversioned
 
76
            and self.removed == other.removed \
 
77
            and self.renamed == other.renamed \
 
78
            and self.modified == other.modified \
 
79
            and self.unchanged == other.unchanged \
 
80
            and self.kind_changed == other.kind_changed \
 
81
            and self.unversioned == other.unversioned
81
82
 
82
83
    def __ne__(self, other):
83
84
        return not (self == other)
86
87
        return "TreeDelta(added=%r, removed=%r, renamed=%r," \
87
88
            " kind_changed=%r, modified=%r, unchanged=%r," \
88
89
            " unversioned=%r)" % (self.added,
89
 
            self.removed, self.renamed, self.kind_changed, self.modified,
90
 
            self.unchanged, self.unversioned)
 
90
                                  self.removed, self.renamed, self.kind_changed, self.modified,
 
91
                                  self.unchanged, self.unversioned)
91
92
 
92
93
    def has_changed(self):
93
94
        return bool(self.modified
126
127
 
127
128
    for (file_id, path, content_change, versioned, parent_id, name, kind,
128
129
         executable) in new_tree.iter_changes(old_tree, want_unchanged,
129
 
            specific_files, extra_trees=extra_trees,
130
 
            require_versioned=require_versioned,
131
 
            want_unversioned=want_unversioned):
 
130
                                              specific_files, extra_trees=extra_trees,
 
131
                                              require_versioned=require_versioned,
 
132
                                              want_unversioned=want_unversioned):
132
133
        if versioned == (False, False):
133
134
            delta.unversioned.append((path[1], None, kind[1]))
134
135
            continue
165
166
    delta.removed.sort()
166
167
    delta.added.sort()
167
168
    delta.renamed.sort()
 
169
 
168
170
    def missing_key(change):
169
171
        return (change[0] or '', change[1])
170
172
    delta.missing.sort(key=missing_key)
202
204
        if output_file is not None:
203
205
            if output is not None:
204
206
                raise BzrError('Cannot specify both output and output_file')
 
207
 
205
208
            def output(fmt, *args):
206
209
                output_file.write((fmt % args) + '\n')
207
210
        self.output = output
216
219
                             'deleted': 'D',
217
220
                             'missing': '!',
218
221
                             }
219
 
        self.versioned_map = {'added': '+', # versioned target
220
 
                              'unchanged': ' ', # versioned in both
221
 
                              'removed': '-', # versioned in source
222
 
                              'unversioned': '?', # versioned in neither
 
222
        self.versioned_map = {'added': '+',  # versioned target
 
223
                              'unchanged': ' ',  # versioned in both
 
224
                              'removed': '-',  # versioned in source
 
225
                              'unversioned': '?',  # versioned in neither
223
226
                              }
224
227
        self.unversioned_filter = unversioned_filter
225
228
        if classify:
255
258
        if paths[1] == '' and versioned == 'added' and self.suppress_root_add:
256
259
            return
257
260
        if self.view_files and not osutils.is_inside_any(self.view_files,
258
 
            paths[1]):
 
261
                                                         paths[1]):
259
262
            return
260
263
        if versioned == 'unversioned':
261
264
            # skip ignored unversioned files if needed.
269
272
        # ( the path is different OR
270
273
        #   the kind is different)
271
274
        if (versioned == 'unchanged' and
272
 
            (renamed or modified == 'kind changed')):
 
275
                (renamed or modified == 'kind changed')):
273
276
            if renamed:
274
277
                # on a rename, we show old and new
275
278
                old_path, path = paths
323
326
        (False, True): 'added',
324
327
        (False, False): 'unversioned',
325
328
        }
 
329
 
326
330
    def path_key(change):
327
331
        if change[1][0] is not None:
328
332
            path = change[1][0]
335
339
        # files are "renamed" if they are moved or if name changes, as long
336
340
        # as it had a value
337
341
        if None not in name and None not in parent_id and\
338
 
            (name[0] != name[1] or parent_id[0] != parent_id[1]):
 
342
                (name[0] != name[1] or parent_id[0] != parent_id[1]):
339
343
            renamed = True
340
344
        else:
341
345
            renamed = False
361
365
 
362
366
 
363
367
def report_delta(to_file, delta, short_status=False, show_ids=False,
364
 
        show_unchanged=False, indent='', predicate=None, classify=True):
 
368
                 show_unchanged=False, indent='', predicate=None, classify=True):
365
369
    """Output this delta in status-like form to to_file.
366
370
 
367
371
    :param to_file: A file-like object where the output is displayed.
454
458
    # order for their 3 first fields and that they also begin like
455
459
    # the delta.modified tuples
456
460
    renamed = [(p, i, k, tm, mm, np)
457
 
               for  p, np, i, k, tm, mm  in delta.renamed]
 
461
               for p, np, i, k, tm, mm in delta.renamed]
458
462
    show_list(renamed, 'renamed', 'R', with_file_id_format='%s',
459
463
              show_more=show_more_renamed)
460
464
    show_list(delta.kind_changed, 'kind changed', 'K',
465
469
        show_list(delta.unchanged, 'unchanged', 'S')
466
470
 
467
471
    show_list(delta.unversioned, 'unknown', ' ')
468