15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
from bzrlib.osutils import is_inside_any
19
19
from bzrlib.delta import compare_trees
20
from bzrlib.log import line_log
20
21
from bzrlib.errors import NoSuchRevision
21
from bzrlib.log import line_log
22
from bzrlib.osutils import is_inside_any
24
# TODO: when showing single-line logs, truncate to the width of the terminal
25
# if known, but only if really going to the terminal (not into a file)
28
24
def show_status(branch, show_unchanged=False,
68
57
new_is_working_tree = True
69
58
if revision is None:
70
new = branch.bzrdir.open_workingtree()
71
old = new.basis_tree()
59
old = branch.basis_tree()
60
new = branch.working_tree()
72
61
elif len(revision) > 0:
74
63
rev_id = revision[0].in_history(branch).rev_id
75
old = branch.repository.revision_tree(rev_id)
64
old = branch.revision_tree(rev_id)
76
65
except NoSuchRevision, e:
77
66
raise BzrCommandError(str(e))
78
67
if len(revision) > 1:
80
69
rev_id = revision[1].in_history(branch).rev_id
81
new = branch.repository.revision_tree(rev_id)
70
new = branch.revision_tree(rev_id)
82
71
new_is_working_tree = False
83
72
except NoSuchRevision, e:
84
73
raise BzrCommandError(str(e))
86
new = branch.bzrdir.open_workingtree()
75
new = branch.working_tree()
88
78
delta = compare_trees(old, new, want_unchanged=show_unchanged,
89
79
specific_files=specific_files)
90
81
delta.show(to_file,
92
83
show_unchanged=show_unchanged)
94
85
if new_is_working_tree:
95
list_paths('unknown', new.unknowns(), specific_files, to_file)
96
list_paths('conflicts', new.iter_conflicts(), specific_files, to_file)
97
if new_is_working_tree and show_pending:
98
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(new.pending_merges()) > 0:
91
print >>to_file, 'pending merges:'
92
last_revision = branch.last_revision()
93
if last_revision is not None:
94
ignore = set(branch.get_ancestry(last_revision))
97
for merge in new.pending_merges():
100
m_revision = branch.get_revision(merge)
101
print >> to_file, ' ', line_log(m_revision, 77)
102
inner_merges = branch.get_ancestry(merge)
103
inner_merges.reverse()
104
for mmerge in inner_merges:
107
mm_revision = branch.get_revision(mmerge)
108
print >> to_file, ' ', line_log(mm_revision, 75)
111
except NoSuchRevision:
112
print >> to_file, ' ', merge
102
def show_pending_merges(new, to_file):
103
"""Write out a display of pending merges in a working tree."""
104
pending = new.pending_merges()
106
if len(pending) == 0:
108
print >>to_file, 'pending merges:'
109
last_revision = branch.last_revision()
110
if last_revision is not None:
111
ignore = set(branch.repository.get_ancestry(last_revision))
114
for merge in new.pending_merges():
117
m_revision = branch.repository.get_revision(merge)
118
print >> to_file, ' ', line_log(m_revision, 77)
119
inner_merges = branch.repository.get_ancestry(merge)
120
inner_merges.reverse()
121
for mmerge in inner_merges:
124
mm_revision = branch.repository.get_revision(mmerge)
125
print >> to_file, ' ', line_log(mm_revision, 75)
127
except NoSuchRevision:
128
print >> to_file, ' ', merge
130
117
def list_paths(header, paths, specific_files, to_file):
131
118
done_header = False