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.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
22
def show_status(branch, show_unchanged=False,
68
55
new_is_working_tree = True
69
56
if revision is None:
70
new = branch.bzrdir.open_workingtree()
71
old = new.basis_tree()
57
old = branch.basis_tree()
58
new = branch.working_tree()
72
59
elif len(revision) > 0:
74
61
rev_id = revision[0].in_history(branch).rev_id
75
old = branch.repository.revision_tree(rev_id)
62
old = branch.revision_tree(rev_id)
76
63
except NoSuchRevision, e:
77
64
raise BzrCommandError(str(e))
78
if (len(revision) > 1) and (revision[1].spec is not None):
80
67
rev_id = revision[1].in_history(branch).rev_id
81
new = branch.repository.revision_tree(rev_id)
68
new = branch.revision_tree(rev_id)
82
69
new_is_working_tree = False
83
70
except NoSuchRevision, e:
84
71
raise BzrCommandError(str(e))
86
new = branch.bzrdir.open_workingtree()
73
new = branch.working_tree()
88
76
delta = compare_trees(old, new, want_unchanged=show_unchanged,
89
77
specific_files=specific_files)
90
79
delta.show(to_file,
92
81
show_unchanged=show_unchanged)
94
83
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)
84
conflicts = new.iter_conflicts()
85
unknowns = new.unknowns()
86
list_paths('unknown', unknowns, specific_files, to_file)
87
list_paths('conflicts', conflicts, specific_files, to_file)
88
if show_pending and len(branch.pending_merges()) > 0:
89
print >>to_file, 'pending merges:'
90
for merge in branch.pending_merges():
91
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
95
def list_paths(header, paths, specific_files, to_file):
131
96
done_header = False