~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/diff.py

  • Committer: Martin Pool
  • Date: 2005-06-22 07:57:56 UTC
  • Revision ID: mbp@sourcefrog.net-20050622075756-f4f98a7f2addddf5
- stubbed-out tests for python plugins

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
from errors import BzrError
20
20
 
21
21
 
22
 
# TODO: Rather than building a changeset object, we should probably
23
 
# invoke callbacks on an object.  That object can either accumulate a
24
 
# list, write them out directly, etc etc.
25
 
 
26
22
def internal_diff(old_label, oldlines, new_label, newlines, to_file):
27
23
    import difflib
28
24
    
63
59
        ud = list(ud)
64
60
        ud[2] = ud[2].replace('+1,0', '+0,0')
65
61
 
66
 
    for line in ud:
67
 
        to_file.write(line)
 
62
    to_file.writelines(ud)
68
63
    if nonl:
69
64
        print >>to_file, "\\ No newline at end of file"
70
65
    print >>to_file
272
267
    Files that are both modified and renamed are listed only in
273
268
    renamed, with the text_modified flag true.
274
269
 
275
 
    Files are only considered renamed if their name has changed or
276
 
    their parent directory has changed.  Renaming a directory
277
 
    does not count as renaming all its contents.
278
 
 
279
270
    The lists are normally sorted when the delta is created.
280
271
    """
281
272
    def __init__(self):
389
380
 
390
381
    for file_id in old_tree:
391
382
        if file_id in new_tree:
392
 
            old_ie = old_inv[file_id]
393
 
            new_ie = new_inv[file_id]
394
 
 
395
 
            kind = old_ie.kind
396
 
            assert kind == new_ie.kind
 
383
            kind = old_inv.get_file_kind(file_id)
 
384
            assert kind == new_inv.get_file_kind(file_id)
397
385
            
398
386
            assert kind in ('file', 'directory', 'symlink', 'root_directory'), \
399
387
                   'invalid file kind %r' % kind
401
389
            if kind == 'root_directory':
402
390
                continue
403
391
            
 
392
            old_path = old_inv.id2path(file_id)
 
393
            new_path = new_inv.id2path(file_id)
 
394
 
404
395
            if specific_files:
405
 
                if (not is_inside_any(specific_files, old_inv.id2path(file_id)) 
406
 
                    and not is_inside_any(specific_files, new_inv.id2path(file_id))):
 
396
                if (not is_inside_any(specific_files, old_path) 
 
397
                    and not is_inside_any(specific_files, new_path)):
407
398
                    continue
408
399
 
409
400
            if kind == 'file':
419
410
            # the same and the parents are unchanged all the way up.
420
411
            # May not be worthwhile.
421
412
            
422
 
            if (old_ie.name != new_ie.name
423
 
                or old_ie.parent_id != new_ie.parent_id):
424
 
                delta.renamed.append((old_inv.id2path(file_id),
425
 
                                      new_inv.id2path(file_id),
426
 
                                      file_id, kind,
 
413
            if old_path != new_path:
 
414
                delta.renamed.append((old_path, new_path, file_id, kind,
427
415
                                      text_modified))
428
416
            elif text_modified:
429
 
                delta.modified.append((new_inv.id2path(file_id), file_id, kind))
 
417
                delta.modified.append((new_path, file_id, kind))
430
418
            elif want_unchanged:
431
 
                delta.unchanged.append((new_inv.id2path(file_id), file_id, kind))
 
419
                delta.unchanged.append((new_path, file_id, kind))
432
420
        else:
433
421
            kind = old_inv.get_file_kind(file_id)
434
422
            old_path = old_inv.id2path(file_id)