bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
2318.2.3
by Kent Gibson
 merged bzr.dev  | 
1  | 
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
 | 
| 
1185.13.2
by Robert Collins
 Merge Aarons conflict plugin for 0.1rc1  | 
2  | 
#
 | 
| 
362
by Martin Pool
 - Import stat-cache code  | 
3  | 
# This program is free software; you can redistribute it and/or modify
 | 
4  | 
# it under the terms of the GNU General Public License as published by
 | 
|
5  | 
# the Free Software Foundation; either version 2 of the License, or
 | 
|
6  | 
# (at your option) any later version.
 | 
|
| 
1185.13.2
by Robert Collins
 Merge Aarons conflict plugin for 0.1rc1  | 
7  | 
#
 | 
| 
362
by Martin Pool
 - Import stat-cache code  | 
8  | 
# This program is distributed in the hope that it will be useful,
 | 
9  | 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|
10  | 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|
11  | 
# GNU General Public License for more details.
 | 
|
| 
1185.13.2
by Robert Collins
 Merge Aarons conflict plugin for 0.1rc1  | 
12  | 
#
 | 
| 
362
by Martin Pool
 - Import stat-cache code  | 
13  | 
# You should have received a copy of the GNU General Public License
 | 
14  | 
# along with this program; if not, write to the Free Software
 | 
|
15  | 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
|
16  | 
||
| 
1185.13.2
by Robert Collins
 Merge Aarons conflict plugin for 0.1rc1  | 
17  | 
import sys  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
18  | 
|
| 
1551.10.7
by Aaron Bentley
 Use new-style output for status  | 
19  | 
from bzrlib import (  | 
20  | 
delta as _mod_delta,  | 
|
21  | 
tree,  | 
|
22  | 
    )
 | 
|
| 
1662.1.9
by Martin Pool
 Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)  | 
23  | 
from bzrlib.diff import _raise_if_nonexistent  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
24  | 
import bzrlib.errors as errors  | 
| 
1185.12.27
by Aaron Bentley
 Use line log for pending merges  | 
25  | 
from bzrlib.log import line_log  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
26  | 
from bzrlib.osutils import is_inside_any  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
27  | 
from bzrlib.symbol_versioning import (deprecated_function,  | 
28  | 
        )
 | 
|
| 
2091.4.1
by wang
 Pushing to a remote branch does not currently update the remote working  | 
29  | 
from bzrlib.trace import warning  | 
| 
362
by Martin Pool
 - Import stat-cache code  | 
30  | 
|
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
31  | 
# TODO: when showing single-line logs, truncate to the width of the terminal
 | 
32  | 
# if known, but only if really going to the terminal (not into a file)
 | 
|
33  | 
||
| 
465
by Martin Pool
 - Move show_status() out of Branch into a new function in  | 
34  | 
|
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
35  | 
def show_tree_status(wt, show_unchanged=None,  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
36  | 
specific_files=None,  | 
37  | 
show_ids=False,  | 
|
38  | 
to_file=None,  | 
|
39  | 
show_pending=True,  | 
|
| 
2147.2.1
by Keir Mierle
 Add a --short flag to status to get svn-style status  | 
40  | 
revision=None,  | 
| 
2318.2.1
by Kent Gibson
 Apply status versioned patch  | 
41  | 
short=False,  | 
42  | 
versioned=False):  | 
|
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
43  | 
"""Display summary of changes.  | 
44  | 
||
45  | 
    By default this compares the working tree to a previous revision. 
 | 
|
46  | 
    If the revision argument is given, summarizes changes between the 
 | 
|
47  | 
    working tree and another, or between two revisions.
 | 
|
48  | 
||
49  | 
    The result is written out as Unicode and to_file should be able 
 | 
|
50  | 
    to encode that.
 | 
|
51  | 
||
| 
1662.1.9
by Martin Pool
 Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)  | 
52  | 
    If showing the status of a working tree, extra information is included
 | 
53  | 
    about unknown files, conflicts, and pending merges.
 | 
|
54  | 
||
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
55  | 
    :param show_unchanged: Deprecated parameter. If set, includes unchanged 
 | 
56  | 
        files.
 | 
|
57  | 
    :param specific_files: If set, a list of filenames whose status should be
 | 
|
58  | 
        shown.  It is an error to give a filename that is not in the working 
 | 
|
| 
1662.1.9
by Martin Pool
 Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)  | 
59  | 
        tree, or in the working inventory or in the basis inventory.
 | 
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
60  | 
    :param show_ids: If set, includes each file's id.
 | 
61  | 
    :param to_file: If set, write to this file (default stdout.)
 | 
|
62  | 
    :param show_pending: If set, write pending merges.
 | 
|
63  | 
    :param revision: If None the compare latest revision with working tree
 | 
|
64  | 
        If not None it must be a RevisionSpec list.
 | 
|
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
65  | 
        If one revision show compared it with working tree.
 | 
66  | 
        If two revisions show status between first and second.
 | 
|
| 
2318.2.1
by Kent Gibson
 Apply status versioned patch  | 
67  | 
    :param short: If True, gives short SVN-style status lines.
 | 
68  | 
    :param versioned: If True, only shows versioned files.
 | 
|
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
69  | 
    """
 | 
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
70  | 
if show_unchanged is not None:  | 
71  | 
warn("show_status_trees with show_unchanged has been deprecated "  | 
|
72  | 
"since bzrlib 0.9", DeprecationWarning, stacklevel=2)  | 
|
73  | 
||
74  | 
if to_file is None:  | 
|
| 
915
by Martin Pool
 - add simple test case for bzr status  | 
75  | 
to_file = sys.stdout  | 
| 
580
by Martin Pool
 - Use explicit lock methods on a branch, rather than doing it  | 
76  | 
|
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
77  | 
wt.lock_read()  | 
| 
580
by Martin Pool
 - Use explicit lock methods on a branch, rather than doing it  | 
78  | 
try:  | 
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
79  | 
new_is_working_tree = True  | 
80  | 
if revision is None:  | 
|
| 
2091.4.1
by wang
 Pushing to a remote branch does not currently update the remote working  | 
81  | 
if wt.last_revision() != wt.branch.last_revision():  | 
82  | 
warning("working tree is out of date, run 'bzr update'")  | 
|
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
83  | 
new = wt  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
84  | 
old = new.basis_tree()  | 
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
85  | 
elif len(revision) > 0:  | 
86  | 
try:  | 
|
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
87  | 
rev_id = revision[0].as_revision_id(wt.branch)  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
88  | 
old = wt.branch.repository.revision_tree(rev_id)  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
89  | 
except errors.NoSuchRevision, e:  | 
90  | 
raise errors.BzrCommandError(str(e))  | 
|
| 
1540.2.6
by Robey Pointer
 make 'log' and 'status' treat '-r N..' as implicitly '-r N..-1'  | 
91  | 
if (len(revision) > 1) and (revision[1].spec is not None):  | 
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
92  | 
try:  | 
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
93  | 
rev_id = revision[1].as_revision_id(wt.branch)  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
94  | 
new = wt.branch.repository.revision_tree(rev_id)  | 
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
95  | 
new_is_working_tree = False  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
96  | 
except errors.NoSuchRevision, e:  | 
97  | 
raise errors.BzrCommandError(str(e))  | 
|
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
98  | 
else:  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
99  | 
new = wt  | 
| 
2255.2.80
by Robert Collins
 In status, read lock the old and new trees being used to let data caching occur.  | 
100  | 
old.lock_read()  | 
101  | 
new.lock_read()  | 
|
102  | 
try:  | 
|
103  | 
_raise_if_nonexistent(specific_files, old, new)  | 
|
| 
2318.2.3
by Kent Gibson
 merged bzr.dev  | 
104  | 
want_unversioned = not versioned  | 
| 
2168.1.3
by John Arbash Meinel
 The logic for when to display 'C' for conflicts was inverted.  | 
105  | 
if short:  | 
| 
3254.1.1
by Aaron Bentley
 Make Tree.iter_changes a public method  | 
106  | 
changes = new.iter_changes(old, show_unchanged, specific_files,  | 
| 
2318.2.3
by Kent Gibson
 merged bzr.dev  | 
107  | 
require_versioned=False, want_unversioned=want_unversioned)  | 
| 
1551.10.25
by Aaron Bentley
 Make ChangeReporter private  | 
108  | 
reporter = _mod_delta._ChangeReporter(output_file=to_file,  | 
| 
2255.7.97
by Robert Collins
 Teach delta.report_changes about unversioned files, removing all inventory access during status --short.  | 
109  | 
unversioned_filter=new.is_ignored)  | 
| 
2255.2.83
by John Arbash Meinel
 [merge] bzr.dev 2294  | 
110  | 
_mod_delta.report_changes(changes, reporter)  | 
| 
2147.2.1
by Keir Mierle
 Add a --short flag to status to get svn-style status  | 
111  | 
else:  | 
| 
2255.2.83
by John Arbash Meinel
 [merge] bzr.dev 2294  | 
112  | 
delta = new.changes_from(old, want_unchanged=show_unchanged,  | 
| 
2255.7.91
by Robert Collins
 Move unknown detection in long status into the delta creation, saving a tree-scan.  | 
113  | 
specific_files=specific_files,  | 
| 
2318.2.3
by Kent Gibson
 merged bzr.dev  | 
114  | 
want_unversioned=want_unversioned)  | 
| 
2255.7.91
by Robert Collins
 Move unknown detection in long status into the delta creation, saving a tree-scan.  | 
115  | 
                # filter out unknown files. We may want a tree method for
 | 
116  | 
                # this
 | 
|
117  | 
delta.unversioned = [unversioned for unversioned in  | 
|
118  | 
delta.unversioned if not new.is_ignored(unversioned[0])]  | 
|
| 
2255.2.83
by John Arbash Meinel
 [merge] bzr.dev 2294  | 
119  | 
delta.show(to_file,  | 
120  | 
show_ids=show_ids,  | 
|
121  | 
show_unchanged=show_unchanged,  | 
|
| 
2255.7.91
by Robert Collins
 Move unknown detection in long status into the delta creation, saving a tree-scan.  | 
122  | 
short_status=False)  | 
| 
1551.15.58
by Aaron Bentley
 Status honours selected paths for conflicts (#127606)  | 
123  | 
            # show the new conflicts only for now. XXX: get them from the
 | 
124  | 
            # delta.
 | 
|
125  | 
conflicts = new.conflicts()  | 
|
126  | 
if specific_files is not None:  | 
|
127  | 
conflicts = conflicts.select_conflicts(new, specific_files,  | 
|
128  | 
ignore_misses=True, recurse=True)[1]  | 
|
129  | 
if len(conflicts) > 0 and not short:  | 
|
| 
2911.6.1
by Blake Winton
 Change 'print >> f,'s to 'f.write('s.  | 
130  | 
to_file.write("conflicts:\n")  | 
| 
1551.15.58
by Aaron Bentley
 Status honours selected paths for conflicts (#127606)  | 
131  | 
for conflict in conflicts:  | 
| 
2255.2.80
by Robert Collins
 In status, read lock the old and new trees being used to let data caching occur.  | 
132  | 
if short:  | 
| 
2255.2.83
by John Arbash Meinel
 [merge] bzr.dev 2294  | 
133  | 
prefix = 'C '  | 
| 
2255.2.80
by Robert Collins
 In status, read lock the old and new trees being used to let data caching occur.  | 
134  | 
else:  | 
135  | 
prefix = ' '  | 
|
| 
2911.6.1
by Blake Winton
 Change 'print >> f,'s to 'f.write('s.  | 
136  | 
to_file.write("%s %s\n" % (prefix, conflict))  | 
| 
3298.1.1
by John Arbash Meinel
 Only show pending merges when not given a list of specific files.  | 
137  | 
if (new_is_working_tree and show_pending  | 
138  | 
and specific_files is None):  | 
|
| 
2255.2.80
by Robert Collins
 In status, read lock the old and new trees being used to let data caching occur.  | 
139  | 
show_pending_merges(new, to_file, short)  | 
140  | 
finally:  | 
|
141  | 
old.unlock()  | 
|
142  | 
new.unlock()  | 
|
| 
580
by Martin Pool
 - Use explicit lock methods on a branch, rather than doing it  | 
143  | 
finally:  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
144  | 
wt.unlock()  | 
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
145  | 
|
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
146  | 
def show_pending_merges(new, to_file, short=False):  | 
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
147  | 
"""Write out a display of pending merges in a working tree."""  | 
| 
1908.6.9
by Robert Collins
 Fix status to not use pending_merges.  | 
148  | 
parents = new.get_parent_ids()  | 
149  | 
if len(parents) < 2:  | 
|
150  | 
        return
 | 
|
151  | 
pending = parents[1:]  | 
|
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
152  | 
branch = new.branch  | 
| 
1908.6.9
by Robert Collins
 Fix status to not use pending_merges.  | 
153  | 
last_revision = parents[0]  | 
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
154  | 
if not short:  | 
| 
2911.6.1
by Blake Winton
 Change 'print >> f,'s to 'f.write('s.  | 
155  | 
to_file.write('pending merges:\n')  | 
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
156  | 
if last_revision is not None:  | 
| 
1908.6.12
by Robert Collins
 Teach status to handle the base revision being a ghost.  | 
157  | 
try:  | 
| 
2490.2.33
by Aaron Bentley
 Disable topological sorting of get_ancestry where sensible  | 
158  | 
ignore = set(branch.repository.get_ancestry(last_revision,  | 
159  | 
topo_sorted=False))  | 
|
| 
1908.6.12
by Robert Collins
 Teach status to handle the base revision being a ghost.  | 
160  | 
except errors.NoSuchRevision:  | 
161  | 
            # the last revision is a ghost : assume everything is new 
 | 
|
162  | 
            # except for it
 | 
|
163  | 
ignore = set([None, last_revision])  | 
|
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
164  | 
else:  | 
| 
1551.6.19
by Aaron Bentley
 Fix pending merge status on empty trees  | 
165  | 
ignore = set([None])  | 
| 
1908.6.9
by Robert Collins
 Fix status to not use pending_merges.  | 
166  | 
    # TODO: this could be improved using merge_sorted - we'd get the same 
 | 
167  | 
    # output rather than one level of indent.
 | 
|
168  | 
for merge in pending:  | 
|
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
169  | 
ignore.add(merge)  | 
170  | 
try:  | 
|
| 
1861.1.1
by Adeodato Simó
 Really use terminal_width() for pending-merge display. r1707 mentioned  | 
171  | 
from bzrlib.osutils import terminal_width  | 
| 
3193.3.2
by Alexander Belchenko
 better formatting of pending merges (short/no-short): actual length of prefix is used  | 
172  | 
width = terminal_width() - 1 # we need one extra space to avoid  | 
173  | 
                                            # extra blank lines
 | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
174  | 
m_revision = branch.repository.get_revision(merge)  | 
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
175  | 
if short:  | 
| 
3193.3.2
by Alexander Belchenko
 better formatting of pending merges (short/no-short): actual length of prefix is used  | 
176  | 
prefix = 'P '  | 
| 
2168.1.2
by John Arbash Meinel
 The texts expected 2 blank spaces after P, so give it to them.  | 
177  | 
else:  | 
| 
3193.3.2
by Alexander Belchenko
 better formatting of pending merges (short/no-short): actual length of prefix is used  | 
178  | 
prefix = ' '  | 
179  | 
to_file.write(prefix)  | 
|
180  | 
to_file.write(line_log(m_revision, width - len(prefix)))  | 
|
| 
2911.6.1
by Blake Winton
 Change 'print >> f,'s to 'f.write('s.  | 
181  | 
to_file.write('\n')  | 
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
182  | 
inner_merges = branch.repository.get_ancestry(merge)  | 
| 
1963.2.6
by Robey Pointer
 pychecker is on crack; go back to using 'is None'.  | 
183  | 
assert inner_merges[0] is None  | 
| 
1668.1.14
by Martin Pool
 merge olaf - InvalidRevisionId fixes  | 
184  | 
inner_merges.pop(0)  | 
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
185  | 
inner_merges.reverse()  | 
186  | 
for mmerge in inner_merges:  | 
|
187  | 
if mmerge in ignore:  | 
|
188  | 
                    continue
 | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
189  | 
mm_revision = branch.repository.get_revision(mmerge)  | 
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
190  | 
if short:  | 
| 
3193.3.2
by Alexander Belchenko
 better formatting of pending merges (short/no-short): actual length of prefix is used  | 
191  | 
prefix = 'P. '  | 
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
192  | 
else:  | 
| 
3193.3.2
by Alexander Belchenko
 better formatting of pending merges (short/no-short): actual length of prefix is used  | 
193  | 
prefix = ' '  | 
194  | 
to_file.write(prefix)  | 
|
195  | 
to_file.write(line_log(mm_revision, width - len(prefix)))  | 
|
| 
2911.6.1
by Blake Winton
 Change 'print >> f,'s to 'f.write('s.  | 
196  | 
to_file.write('\n')  | 
| 
1185.33.70
by Martin Pool
 Refactor status display code.  | 
197  | 
ignore.add(mmerge)  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
198  | 
except errors.NoSuchRevision:  | 
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
199  | 
if short:  | 
| 
1551.10.7
by Aaron Bentley
 Use new-style output for status  | 
200  | 
prefix = 'P '  | 
| 
2147.2.2
by Keir Mierle
 Fix spacing error and add tests for status --short command flag.  | 
201  | 
else:  | 
| 
2147.2.4
by Keir Mierle
 Make changes suggested by Aaron Bently  | 
202  | 
prefix = ' '  | 
| 
2911.6.1
by Blake Winton
 Change 'print >> f,'s to 'f.write('s.  | 
203  | 
to_file.write(prefix + ' ' + merge)  | 
204  | 
to_file.write('\n')  |