~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/status.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-06-03 20:18:35 UTC
  • mfrom: (1185.82.137 w-changeset)
  • Revision ID: pqm@pqm.ubuntu.com-20060603201835-1c9a1725641ccd24
Implement bundles

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
import sys
18
18
 
 
19
from bzrlib.delta import compare_trees
19
20
from bzrlib.diff import _raise_if_nonexistent
20
 
import bzrlib.errors as errors
 
21
from bzrlib.errors import NoSuchRevision
21
22
from bzrlib.log import line_log
22
23
from bzrlib.osutils import is_inside_any
23
 
from bzrlib.symbol_versioning import (deprecated_function,
24
 
        zero_eight,
25
 
        )
 
24
from bzrlib.symbol_versioning import *
26
25
 
27
26
# TODO: when showing single-line logs, truncate to the width of the terminal
28
27
# if known, but only if really going to the terminal (not into a file)
29
28
 
30
29
 
31
30
@deprecated_function(zero_eight)
32
 
def show_status(branch, show_unchanged=None,
 
31
def show_status(branch, show_unchanged=False,
33
32
                specific_files=None,
34
33
                show_ids=False,
35
34
                to_file=None,
70
69
                     specific_files, show_ids, to_file, show_pending, revision)
71
70
 
72
71
 
73
 
def show_tree_status(wt, show_unchanged=None,
 
72
def show_tree_status(wt, show_unchanged=False,
74
73
                     specific_files=None,
75
74
                     show_ids=False,
76
75
                     to_file=None,
88
87
    If showing the status of a working tree, extra information is included
89
88
    about unknown files, conflicts, and pending merges.
90
89
 
91
 
    :param show_unchanged: Deprecated parameter. If set, includes unchanged 
92
 
        files.
93
 
    :param specific_files: If set, a list of filenames whose status should be
94
 
        shown.  It is an error to give a filename that is not in the working 
 
90
    show_unchanged
 
91
        If set, includes unchanged files.
 
92
 
 
93
    specific_files
 
94
        If set, a list of filenames whose status should be shown.
 
95
        It is an error to give a filename that is not in the working 
95
96
        tree, or in the working inventory or in the basis inventory.
96
 
    :param show_ids: If set, includes each file's id.
97
 
    :param to_file: If set, write to this file (default stdout.)
98
 
    :param show_pending: If set, write pending merges.
99
 
    :param revision: If None the compare latest revision with working tree
100
 
        If not None it must be a RevisionSpec list.
 
97
 
 
98
    show_ids
 
99
        If set, includes each file's id.
 
100
 
 
101
    to_file
 
102
        If set, write to this file (default stdout.)
 
103
 
 
104
    show_pending
 
105
        If set, write pending merges.
 
106
 
 
107
    revision
 
108
        If None the compare latest revision with working tree
101
109
        If one revision show compared it with working tree.
102
110
        If two revisions show status between first and second.
103
111
    """
104
 
    if show_unchanged is not None:
105
 
        warn("show_status_trees with show_unchanged has been deprecated "
106
 
             "since bzrlib 0.9", DeprecationWarning, stacklevel=2)
107
 
 
108
 
    if to_file is None:
 
112
    if to_file == None:
109
113
        to_file = sys.stdout
110
114
    
111
115
    wt.lock_read()
118
122
            try:
119
123
                rev_id = revision[0].in_history(wt.branch).rev_id
120
124
                old = wt.branch.repository.revision_tree(rev_id)
121
 
            except errors.NoSuchRevision, e:
122
 
                raise errors.BzrCommandError(str(e))
 
125
            except NoSuchRevision, e:
 
126
                raise BzrCommandError(str(e))
123
127
            if (len(revision) > 1) and (revision[1].spec is not None):
124
128
                try:
125
129
                    rev_id = revision[1].in_history(wt.branch).rev_id
126
130
                    new = wt.branch.repository.revision_tree(rev_id)
127
131
                    new_is_working_tree = False
128
 
                except errors.NoSuchRevision, e:
129
 
                    raise errors.BzrCommandError(str(e))
 
132
                except NoSuchRevision, e:
 
133
                    raise BzrCommandError(str(e))
130
134
            else:
131
135
                new = wt
132
136
        _raise_if_nonexistent(specific_files, old, new)
133
 
        delta = new.changes_from(old, want_unchanged=show_unchanged,
 
137
        delta = compare_trees(old, new, want_unchanged=show_unchanged,
134
138
                              specific_files=specific_files)
135
139
        delta.show(to_file,
136
140
                   show_ids=show_ids,
137
141
                   show_unchanged=show_unchanged)
138
142
 
139
 
        list_paths('unknown', new.unknowns(), specific_files, to_file)
140
 
        conflict_title = False
141
 
        # show the new conflicts only for now. XXX: get them from the delta.
142
 
        for conflict in new.conflicts():
143
 
            if conflict_title is False:
144
 
                print >> to_file, "conflicts:"
145
 
                conflict_title = True
146
 
            print >> to_file, "  %s" % conflict
 
143
        if new_is_working_tree:
 
144
            list_paths('unknown', new.unknowns(), specific_files, to_file)
 
145
            conflict_title = False
 
146
            for conflict in wt.conflicts():
 
147
                if conflict_title is False:
 
148
                    print >> to_file, "conflicts:"
 
149
                    conflict_title = True
 
150
                print >> to_file, "  %s" % conflict
147
151
        if new_is_working_tree and show_pending:
148
152
            show_pending_merges(new, to_file)
149
153
    finally:
164
168
    for merge in new.pending_merges():
165
169
        ignore.add(merge)
166
170
        try:
167
 
            from bzrlib.osutils import terminal_width
168
 
            width = terminal_width()
169
171
            m_revision = branch.repository.get_revision(merge)
170
 
            print >> to_file, ' ', line_log(m_revision, width - 3)
 
172
            print >> to_file, ' ', line_log(m_revision, 77)
171
173
            inner_merges = branch.repository.get_ancestry(merge)
172
174
            assert inner_merges[0] == None
173
175
            inner_merges.pop(0)
176
178
                if mmerge in ignore:
177
179
                    continue
178
180
                mm_revision = branch.repository.get_revision(mmerge)
179
 
                print >> to_file, '   ', line_log(mm_revision, width - 5)
 
181
                print >> to_file, '   ', line_log(mm_revision, 75)
180
182
                ignore.add(mmerge)
181
 
        except errors.NoSuchRevision:
182
 
            print >> to_file, ' ', merge
 
183
        except NoSuchRevision:
 
184
            print >> to_file, ' ', merge 
183
185
        
184
186
def list_paths(header, paths, specific_files, to_file):
185
187
    done_header = False