~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/status.py

  • Committer: Martin Pool
  • Date: 2005-05-10 08:15:58 UTC
  • Revision ID: mbp@sourcefrog.net-20050510081558-9a38e2c46ba4ebc4
- Patch from Fredrik Lundh to check Python version and 
  try to find a better one if it's too old.

  Patched to try to prevent infinite loops in wierd configurations,
  and to log to stderr.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
 
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.
 
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).
29
26
    """
30
 
    import sys
31
 
    from bzrlib.diff import compare_trees
 
27
    import cache
 
28
 
 
29
    inv = branch.read_working_inventory()
 
30
    cc = cache.update_cache(branch, inv)
 
31
    basis_inv = branch.basis_tree().inventory
32
32
    
33
 
    branch.lock('r')
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()
 
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
59
52