~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/delta.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-02-06 19:35:45 UTC
  • mfrom: (1551.10.12 Aaron's mergeable stuff)
  • Revision ID: pqm@pqm.ubuntu.com-20070206193545-d5eac67ff047ce5c
Change status --short output to use ChangeReporter

Show diffs side-by-side

added added

removed removed

Lines of Context:
255
255
class ChangeReporter(object):
256
256
    """Report changes between two trees"""
257
257
 
258
 
    def __init__(self, old_inventory, output=None):
 
258
    def __init__(self, old_inventory, output=None, suppress_root_add=True,
 
259
                 output_file=None):
 
260
        """Constructor
 
261
 
 
262
        :param old_inventory: The inventory of the old tree
 
263
        :param output: a function with the signature of trace.note, i.e.
 
264
            accepts a format and parameters.
 
265
        :param supress_root_add: If true, adding the root will be ignored
 
266
            (i.e. when a tree has just been initted)
 
267
        :param output_file: If supplied, a file-like object to write to.
 
268
            Only one of output and output_file may be supplied.
 
269
        """
259
270
        self.old_inventory = old_inventory
 
271
        if output_file is not None:
 
272
            if output is not None:
 
273
                raise BzrError('Cannot specify both output and output_file')
 
274
            def output(fmt, *args):
 
275
                output_file.write((fmt % args) + '\n')
260
276
        self.output = output
261
277
        if self.output is None:
262
278
            from bzrlib import trace
263
279
            self.output = trace.note
 
280
        self.suppress_root_add = suppress_root_add
264
281
 
265
282
    def report(self, file_id, path, versioned, renamed, modified, exe_change,
266
283
               kind):
277
294
        :param kind: A pair of file kinds, as generated by Tree._iter_changes.
278
295
            None indicates no file present.
279
296
        """
 
297
        if path == '' and versioned == 'added' and self.suppress_root_add:
 
298
            return
280
299
        modified_map = {'kind changed': 'K',
281
300
                        'unchanged': ' ',
282
301
                        'created': 'N',
296
315
                old_path = path
297
316
        if modified == 'deleted':
298
317
            path += osutils.kind_marker(kind[0])
299
 
        else:
 
318
        elif kind[1] is not None:
300
319
            path += osutils.kind_marker(kind[1])
301
320
        if old_path != "":
302
 
            old_path += "%s => " % osutils.kind_marker(kind[0])
 
321
            if kind[0] is not None:
 
322
                old_path += osutils.kind_marker(kind[0])
 
323
            old_path += " => "
303
324
        if exe_change:
304
325
            exe = '*'
305
326
        else: