20
20
delta as _mod_delta,
25
24
revision as _mod_revision,
27
26
import bzrlib.errors as errors
28
from bzrlib.osutils import is_inside_any
29
from bzrlib.symbol_versioning import (deprecated_function,
31
27
from bzrlib.trace import mutter, warning
33
29
# TODO: when showing single-line logs, truncate to the width of the terminal
34
30
# if known, but only if really going to the terminal (not into a file)
33
def report_changes(to_file, old, new, specific_files,
34
show_short_reporter, show_long_callback,
35
short=False, want_unchanged=False,
36
want_unversioned=False, show_ids=False):
37
"""Display summary of changes.
39
This compares two trees with regards to a list of files, and delegates
40
the display to underlying elements.
42
For short output, it creates an iterator on all changes, and lets a given
43
reporter display these changes.
45
For stantard output, it creates a delta of the changes, and forwards it
48
:param to_file: If set, write to this file (default stdout.)
49
:param old: Start tree for the comparison
50
:param end: End tree for the comparison
51
:param specific_files: If set, a list of filenames whose status should be
52
shown. It is an error to give a filename that is not in the working
53
tree, or in the working inventory or in the basis inventory.
54
:param show_short_reporter: Reporter in charge of display for short output
55
:param show_long_callback: Callback in charge of display for normal output
56
:param short: If True, gives short SVN-style status lines.
57
:param want_unchanged: Deprecated parameter. If set, includes unchanged
59
:param show_ids: If set, includes each file's id.
60
:param want_unversioned: If False, only shows versioned files.
64
changes = new.iter_changes(old, want_unchanged, specific_files,
65
require_versioned=False, want_unversioned=want_unversioned)
66
_mod_delta.report_changes(changes, show_short_reporter)
69
delta = new.changes_from(old, want_unchanged=want_unchanged,
70
specific_files=specific_files,
71
want_unversioned=want_unversioned)
72
# filter out unknown files. We may want a tree method for
74
delta.unversioned = [unversioned for unversioned in
75
delta.unversioned if not new.is_ignored(unversioned[0])]
76
show_long_callback(to_file, delta,
78
show_unchanged=want_unchanged)
37
81
def show_tree_status(wt, show_unchanged=None,
38
82
specific_files=None,
71
116
:param verbose: If True, show all merged revisions, not just
73
118
:param versioned: If True, only shows versioned files.
119
:param show_long_callback: A callback: message = show_long_callback(to_file, delta,
120
show_ids, show_unchanged, indent, filter), only used with the long output
75
122
if show_unchanged is not None:
76
123
warn("show_tree_status with show_unchanged has been deprecated "
106
153
specific_files, nonexistents \
107
154
= _filter_nonexistent(specific_files, old, new)
108
155
want_unversioned = not versioned
110
changes = new.iter_changes(old, show_unchanged, specific_files,
111
require_versioned=False, want_unversioned=want_unversioned)
112
reporter = _mod_delta._ChangeReporter(output_file=to_file,
113
unversioned_filter=new.is_ignored)
114
_mod_delta.report_changes(changes, reporter)
116
delta = new.changes_from(old, want_unchanged=show_unchanged,
117
specific_files=specific_files,
118
want_unversioned=want_unversioned)
119
# filter out unknown files. We may want a tree method for
121
delta.unversioned = [unversioned for unversioned in
122
delta.unversioned if not new.is_ignored(unversioned[0])]
125
show_unchanged=show_unchanged,
157
# Reporter used for short outputs
158
reporter = _mod_delta._ChangeReporter(output_file=to_file,
159
unversioned_filter=new.is_ignored)
160
report_changes(to_file, old, new, specific_files,
161
reporter, show_long_callback,
162
short=short, want_unchanged=show_unchanged,
163
want_unversioned=want_unversioned, show_ids=show_ids)
165
# show the ignored files among specific files (i.e. show the files
166
# identified from input that we choose to ignore).
167
if specific_files is not None:
168
# Ignored files is sorted because specific_files is already sorted
169
ignored_files = [specific for specific in
170
specific_files if new.is_ignored(specific)]
171
if len(ignored_files) > 0 and not short:
172
to_file.write("ignored:\n")
176
for ignored_file in ignored_files:
177
to_file.write("%s %s\n" % (prefix, ignored_file))
127
179
# show the new conflicts only for now. XXX: get them from the
129
181
conflicts = new.conflicts()