~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/status.py

  • Committer: Martin Pool
  • Date: 2005-07-07 10:22:02 UTC
  • Revision ID: mbp@sourcefrog.net-20050707102201-2d2a13a25098b101
- rearrange and clear up merged weave

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
 
19
 
def find_modified(branch):
20
 
    """Return a list of files that have been modified in the working copy.
21
 
 
22
 
    This does not consider renames and does not include files added or
23
 
    deleted.
24
 
 
25
 
    Each modified file is returned as (PATH, ENTRY).
 
19
def show_status(branch, show_unchanged=False,
 
20
                specific_files=None,
 
21
                show_ids=False):
 
22
    """Display single-line status for non-ignored working files.
 
23
 
 
24
    show_all
 
25
        If true, show unmodified files too.
 
26
 
 
27
    specific_files
 
28
        If set, only show the status of files in this list.
26
29
    """
27
 
    import cache
28
 
 
29
 
    inv = branch.read_working_inventory()
30
 
    cc = cache.update_cache(branch, inv)
31
 
    basis_inv = branch.basis_tree().inventory
 
30
    import sys
 
31
    from bzrlib.diff import compare_trees
32
32
    
33
 
    for path, entry in inv.iter_entries():
34
 
        if entry.kind != 'file':
35
 
            continue
36
 
        
37
 
        file_id = entry.file_id
38
 
        ce = cc.get(file_id)
39
 
        if not ce:
40
 
            continue                    # not in working dir
41
 
 
42
 
        if file_id not in basis_inv:
43
 
            continue                    # newly added
44
 
 
45
 
        old_entry = basis_inv[file_id]
46
 
 
47
 
        if (old_entry.text_size == ce[3]
48
 
            and old_entry.text_sha1 == ce[1]):
49
 
            continue
50
 
 
51
 
        yield path, entry
 
33
    branch.lock_read()
 
34
    try:
 
35
 
 
36
        old = branch.basis_tree()
 
37
        new = branch.working_tree()
 
38
 
 
39
        delta = compare_trees(old, new, want_unchanged=show_unchanged,
 
40
                              specific_files=specific_files)
 
41
 
 
42
        delta.show(sys.stdout, show_ids=show_ids,
 
43
                   show_unchanged=show_unchanged)
 
44
 
 
45
        unknowns = new.unknowns()
 
46
        done_header = False
 
47
        for path in unknowns:
 
48
            # FIXME: Should also match if the unknown file is within a
 
49
            # specified directory.
 
50
            if specific_files:
 
51
                if path not in specific_files:
 
52
                    continue
 
53
            if not done_header:
 
54
                print 'unknown:'
 
55
                done_header = True
 
56
            print ' ', path
 
57
    finally:
 
58
        branch.unlock()
52
59