~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/status.py

Fix http server tests for win32/macos (John)

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
from bzrlib.log import line_log
21
21
from bzrlib.errors import NoSuchRevision
22
22
 
23
 
# TODO: when showing single-line logs, truncate to the width of the terminal
24
 
# if known, but only if really going to the terminal (not into a file)
25
 
 
26
23
 
27
24
def show_status(branch, show_unchanged=False,
28
25
                specific_files=None,
30
27
                to_file=None,
31
28
                show_pending=True,
32
29
                revision=None):
33
 
    """Display summary of changes.
34
 
 
35
 
    By default this compares the working tree to a previous revision. 
36
 
    If the revision argument is given, summarizes changes between the 
37
 
    working tree and another, or between two revisions.
38
 
 
39
 
    The result is written out as Unicode and to_file should be able 
40
 
    to encode that.
 
30
    """Display status for non-ignored working files.
41
31
 
42
32
    show_unchanged
43
33
        If set, includes unchanged files.
93
83
                   show_unchanged=show_unchanged)
94
84
 
95
85
        if new_is_working_tree:
96
 
            list_paths('unknown', new.unknowns(), specific_files, to_file)
97
 
            list_paths('conflicts', new.iter_conflicts(), specific_files, to_file)
98
 
        if new_is_working_tree and show_pending:
99
 
            show_pending_merges(new, to_file)
 
86
            conflicts = new.iter_conflicts()
 
87
            unknowns = new.unknowns()
 
88
            list_paths('unknown', unknowns, specific_files, to_file)
 
89
            list_paths('conflicts', conflicts, specific_files, to_file)
 
90
            if show_pending and len(branch.pending_merges()) > 0:
 
91
                print >>to_file, 'pending merges:'
 
92
                for merge in branch.pending_merges():
 
93
                    try:
 
94
                        m_revision = branch.get_revision(merge)
 
95
                        print >> to_file, ' ', line_log(m_revision, 77)
 
96
                    except NoSuchRevision:
 
97
                        print >> to_file, ' ', merge 
 
98
                        
100
99
    finally:
101
100
        branch.unlock()
102
 
 
103
 
def show_pending_merges(new, to_file):
104
 
    """Write out a display of pending merges in a working tree."""
105
 
    pending = new.pending_merges()
106
 
    branch = new.branch
107
 
    if len(pending) == 0:
108
 
        return
109
 
    print >>to_file, 'pending merges:'
110
 
    last_revision = branch.last_revision()
111
 
    if last_revision is not None:
112
 
        ignore = set(branch.get_ancestry(last_revision))
113
 
    else:
114
 
        ignore = set()
115
 
    for merge in new.pending_merges():
116
 
        ignore.add(merge)
117
 
        try:
118
 
            m_revision = branch.get_revision(merge)
119
 
            print >> to_file, ' ', line_log(m_revision, 77)
120
 
            inner_merges = branch.get_ancestry(merge)
121
 
            inner_merges.reverse()
122
 
            for mmerge in inner_merges:
123
 
                if mmerge in ignore:
124
 
                    continue
125
 
                mm_revision = branch.get_revision(mmerge)
126
 
                print >> to_file, '   ', line_log(mm_revision, 75)
127
 
                ignore.add(mmerge)
128
 
        except NoSuchRevision:
129
 
            print >> to_file, ' ', merge 
130
101
        
131
102
def list_paths(header, paths, specific_files, to_file):
132
103
    done_header = False