bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
1  | 
# Copyright (C) 2004, 2005, 2006 by Canonical Ltd
 | 
| 
1887.1.1
by Adeodato Simó
 Do not separate paragraphs in the copyright statement with blank lines,  | 
2  | 
#
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
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.
 | 
|
| 
1887.1.1
by Adeodato Simó
 Do not separate paragraphs in the copyright statement with blank lines,  | 
7  | 
#
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
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.
 | 
|
| 
1887.1.1
by Adeodato Simó
 Do not separate paragraphs in the copyright statement with blank lines,  | 
12  | 
#
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
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.33.90
by Martin Pool
 [merge] add --dry-run option (mpe)  | 
17  | 
"""builtin bzr commands"""
 | 
18  | 
||
19  | 
||
| 
1685.1.52
by John Arbash Meinel
 [merge] bzr.dev 1704  | 
20  | 
import codecs  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
21  | 
import errno  | 
| 
1185.65.29
by Robert Collins
 Implement final review suggestions.  | 
22  | 
import os  | 
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
23  | 
import os.path  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
24  | 
import sys  | 
25  | 
||
| 
1773.4.2
by Martin Pool
 Cleanup of imports; undeprecate all_revision_ids()  | 
26  | 
import bzrlib  | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
27  | 
from bzrlib import (  | 
28  | 
branch,  | 
|
29  | 
bundle,  | 
|
30  | 
bzrdir,  | 
|
31  | 
config,  | 
|
32  | 
errors,  | 
|
33  | 
ignores,  | 
|
34  | 
log,  | 
|
35  | 
osutils,  | 
|
36  | 
repository,  | 
|
37  | 
transport,  | 
|
38  | 
ui,  | 
|
39  | 
urlutils,  | 
|
40  | 
    )
 | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
41  | 
from bzrlib.branch import Branch, BranchReferenceFormat  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
42  | 
from bzrlib.bundle import read_bundle_from_url  | 
43  | 
from bzrlib.bundle.apply_bundle import install_bundle, merge_bundle  | 
|
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
44  | 
from bzrlib.conflicts import ConflictList  | 
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
45  | 
from bzrlib.commands import Command, display_command  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
46  | 
from bzrlib.errors import (BzrError, BzrCheckError, BzrCommandError,  | 
| 
1185.35.13
by Aaron Bentley
 Merged Martin  | 
47  | 
NotBranchError, DivergedBranches, NotConflicted,  | 
| 
1830.4.8
by Wouter van Heyst
 clean up imports (and get if collapsing right)  | 
48  | 
NoSuchFile, NoWorkingTree, FileInWrongBranch,  | 
49  | 
NotVersionedError, NotABundle)  | 
|
| 
1534.7.140
by Aaron Bentley
 Moved the merge stuff into merge.py  | 
50  | 
from bzrlib.merge import Merge3Merger  | 
| 
1185.16.43
by Martin Pool
 - clean up handling of option objects  | 
51  | 
from bzrlib.option import Option  | 
| 
1551.2.32
by Aaron Bentley
 Handle progress phases more nicely in merge  | 
52  | 
from bzrlib.progress import DummyProgress, ProgressPhase  | 
| 
1711.1.2
by Robert Collins
 'bzr add' is now less verbose in telling you what ignore globs were  | 
53  | 
from bzrlib.revision import common_ancestor  | 
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
54  | 
from bzrlib.revisionspec import RevisionSpec  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
55  | 
from bzrlib.trace import mutter, note, log_error, warning, is_quiet, info  | 
| 
1534.4.26
by Robert Collins
 Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.  | 
56  | 
from bzrlib.transport.local import LocalTransport  | 
| 
1457.1.4
by Robert Collins
 Branch.relpath has been moved to WorkingTree.relpath.  | 
57  | 
from bzrlib.workingtree import WorkingTree  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
58  | 
|
59  | 
||
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
60  | 
def tree_files(file_list, default_branch=u'.'):  | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
61  | 
try:  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
62  | 
return internal_tree_files(file_list, default_branch)  | 
| 
1185.35.32
by Aaron Bentley
 Fixed handling of files in mixed branches  | 
63  | 
except FileInWrongBranch, e:  | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
64  | 
raise BzrCommandError("%s is not in the same branch as %s" %  | 
| 
1185.35.32
by Aaron Bentley
 Fixed handling of files in mixed branches  | 
65  | 
(e.path, file_list[0]))  | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
66  | 
|
| 
1185.85.12
by John Arbash Meinel
 Refactoring AddAction to allow redirecting to an encoding file.  | 
67  | 
|
| 
1658.1.9
by Martin Pool
 Give an error for bzr diff on an nonexistent file (Malone #3619)  | 
68  | 
# XXX: Bad function name; should possibly also be a class method of
 | 
69  | 
# WorkingTree rather than a function.
 | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
70  | 
def internal_tree_files(file_list, default_branch=u'.'):  | 
| 
1658.1.8
by Martin Pool
 (internal_tree_files) Better docstring  | 
71  | 
"""Convert command-line paths to a WorkingTree and relative paths.  | 
72  | 
||
73  | 
    This is typically used for command-line processors that take one or
 | 
|
74  | 
    more filenames, and infer the workingtree that contains them.
 | 
|
75  | 
||
76  | 
    The filenames given are not required to exist.
 | 
|
77  | 
||
78  | 
    :param file_list: Filenames to convert.  
 | 
|
79  | 
||
80  | 
    :param default_branch: Fallback tree path to use if file_list is empty or None.
 | 
|
81  | 
||
82  | 
    :return: workingtree, [relative_paths]
 | 
|
| 
1185.12.101
by Aaron Bentley
 Made commit take branch from first argument, if supplied.  | 
83  | 
    """
 | 
84  | 
if file_list is None or len(file_list) == 0:  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
85  | 
return WorkingTree.open_containing(default_branch)[0], file_list  | 
86  | 
tree = WorkingTree.open_containing(file_list[0])[0]  | 
|
| 
1185.12.101
by Aaron Bentley
 Made commit take branch from first argument, if supplied.  | 
87  | 
new_list = []  | 
88  | 
for filename in file_list:  | 
|
| 
1185.35.32
by Aaron Bentley
 Fixed handling of files in mixed branches  | 
89  | 
try:  | 
90  | 
new_list.append(tree.relpath(filename))  | 
|
| 
1185.31.45
by John Arbash Meinel
 Refactoring Exceptions found some places where the wrong exception was caught.  | 
91  | 
except errors.PathNotChild:  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
92  | 
raise FileInWrongBranch(tree.branch, filename)  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
93  | 
return tree, new_list  | 
| 
1185.12.101
by Aaron Bentley
 Made commit take branch from first argument, if supplied.  | 
94  | 
|
95  | 
||
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
96  | 
def get_format_type(typestring):  | 
97  | 
"""Parse and return a format specifier."""  | 
|
| 
1666.1.3
by Robert Collins
 Fix and test upgrades from bzrdir 6 over SFTP.  | 
98  | 
if typestring == "weave":  | 
99  | 
return bzrdir.BzrDirFormat6()  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
100  | 
if typestring == "default":  | 
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
101  | 
return bzrdir.BzrDirMetaFormat1()  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
102  | 
if typestring == "metaweave":  | 
103  | 
format = bzrdir.BzrDirMetaFormat1()  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
104  | 
format.repository_format = repository.RepositoryFormat7()  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
105  | 
return format  | 
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
106  | 
if typestring == "knit":  | 
107  | 
format = bzrdir.BzrDirMetaFormat1()  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
108  | 
format.repository_format = repository.RepositoryFormatKnit1()  | 
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
109  | 
return format  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
110  | 
msg = "Unknown bzr format %s. Current formats are: default, knit,\n" \  | 
111  | 
"metaweave and weave" % typestring  | 
|
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
112  | 
raise BzrCommandError(msg)  | 
113  | 
||
114  | 
||
| 
1185.16.112
by mbp at sourcefrog
 todo  | 
115  | 
# TODO: Make sure no commands unconditionally use the working directory as a
 | 
116  | 
# branch.  If a filename argument is used, the first of them should be used to
 | 
|
117  | 
# specify the branch.  (Perhaps this can be factored out into some kind of
 | 
|
118  | 
# Argument class, representing a file in a branch, where the first occurrence
 | 
|
119  | 
# opens the branch?)
 | 
|
120  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
121  | 
class cmd_status(Command):  | 
122  | 
"""Display status summary.  | 
|
123  | 
||
124  | 
    This reports on versioned and unknown files, reporting them
 | 
|
125  | 
    grouped by state.  Possible states are:
 | 
|
126  | 
||
127  | 
    added
 | 
|
128  | 
        Versioned in the working copy but not in the previous revision.
 | 
|
129  | 
||
130  | 
    removed
 | 
|
131  | 
        Versioned in the previous revision but removed or deleted
 | 
|
132  | 
        in the working copy.
 | 
|
133  | 
||
134  | 
    renamed
 | 
|
135  | 
        Path of this file changed from the previous revision;
 | 
|
136  | 
        the text may also have changed.  This includes files whose
 | 
|
137  | 
        parent directory was renamed.
 | 
|
138  | 
||
139  | 
    modified
 | 
|
140  | 
        Text has changed since the previous revision.
 | 
|
141  | 
||
142  | 
    unknown
 | 
|
143  | 
        Not versioned and not matching an ignore pattern.
 | 
|
144  | 
||
145  | 
    To see ignored files use 'bzr ignored'.  For details in the
 | 
|
146  | 
    changes to file texts, use 'bzr diff'.
 | 
|
147  | 
||
148  | 
    If no arguments are specified, the status of the entire working
 | 
|
149  | 
    directory is shown.  Otherwise, only the status of the specified
 | 
|
150  | 
    files or directories is reported.  If a directory is given, status
 | 
|
151  | 
    is reported for everything inside that directory.
 | 
|
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
152  | 
|
153  | 
    If a revision argument is given, the status is calculated against
 | 
|
154  | 
    that revision, or between two revisions if two are provided.
 | 
|
| 
1185.3.2
by Martin Pool
 - remove -r option from status command because it's not used  | 
155  | 
    """
 | 
| 
1185.16.76
by Martin Pool
 doc  | 
156  | 
|
157  | 
    # TODO: --no-recurse, --recurse options
 | 
|
158  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
159  | 
takes_args = ['file*']  | 
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
160  | 
takes_options = ['show-ids', 'revision']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
161  | 
aliases = ['st', 'stat']  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
162  | 
|
163  | 
encoding_type = 'replace'  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
164  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
165  | 
    @display_command
 | 
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
166  | 
def run(self, show_ids=False, file_list=None, revision=None):  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
167  | 
from bzrlib.status import show_tree_status  | 
| 
1185.85.15
by John Arbash Meinel
 Updated bzr status, adding test_cat  | 
168  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
169  | 
tree, file_list = tree_files(file_list)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
170  | 
|
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
171  | 
show_tree_status(tree, show_ids=show_ids,  | 
| 
1185.85.84
by John Arbash Meinel
 [merge] bzr.dev 1573, lots of updates  | 
172  | 
specific_files=file_list, revision=revision,  | 
173  | 
to_file=self.outf)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
174  | 
|
175  | 
||
176  | 
class cmd_cat_revision(Command):  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
177  | 
"""Write out metadata for a revision.  | 
178  | 
    
 | 
|
179  | 
    The revision to print can either be specified by a specific
 | 
|
180  | 
    revision identifier, or you can use --revision.
 | 
|
181  | 
    """
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
182  | 
|
183  | 
hidden = True  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
184  | 
takes_args = ['revision_id?']  | 
185  | 
takes_options = ['revision']  | 
|
| 
1685.1.76
by Wouter van Heyst
 codecleanup  | 
186  | 
    # cat-revision is more for frontends so should be exact
 | 
187  | 
encoding = 'strict'  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
188  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
189  | 
    @display_command
 | 
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
190  | 
def run(self, revision_id=None, revision=None):  | 
191  | 
||
192  | 
if revision_id is not None and revision is not None:  | 
|
193  | 
raise BzrCommandError('You can only supply one of revision_id or --revision')  | 
|
194  | 
if revision_id is None and revision is None:  | 
|
195  | 
raise BzrCommandError('You must supply either --revision or a revision_id')  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
196  | 
b = WorkingTree.open_containing(u'.')[0].branch  | 
| 
1185.85.72
by John Arbash Meinel
 Fix some of the tests.  | 
197  | 
|
198  | 
        # TODO: jam 20060112 should cat-revision always output utf-8?
 | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
199  | 
if revision_id is not None:  | 
| 
1185.85.78
by John Arbash Meinel
 [merge] jam-integration 1512, includes Storage changes.  | 
200  | 
self.outf.write(b.repository.get_revision_xml(revision_id).decode('utf-8'))  | 
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
201  | 
elif revision is not None:  | 
202  | 
for rev in revision:  | 
|
203  | 
if rev is None:  | 
|
204  | 
raise BzrCommandError('You cannot specify a NULL revision.')  | 
|
205  | 
revno, rev_id = rev.in_history(b)  | 
|
| 
1185.85.78
by John Arbash Meinel
 [merge] jam-integration 1512, includes Storage changes.  | 
206  | 
self.outf.write(b.repository.get_revision_xml(rev_id).decode('utf-8'))  | 
| 
1185.1.29
by Robert Collins
 merge merge tweaks from aaron, which includes latest .dev  | 
207  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
208  | 
|
209  | 
class cmd_revno(Command):  | 
|
210  | 
"""Show current revision number.  | 
|
211  | 
||
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
212  | 
    This is equal to the number of revisions on this branch.
 | 
213  | 
    """
 | 
|
214  | 
||
| 
1185.50.16
by John Arbash Meinel
 [patch] Michael Ellerman: 'Trivial patch to allow revno to take a location'  | 
215  | 
takes_args = ['location?']  | 
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
216  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
217  | 
    @display_command
 | 
| 
1185.50.16
by John Arbash Meinel
 [patch] Michael Ellerman: 'Trivial patch to allow revno to take a location'  | 
218  | 
def run(self, location=u'.'):  | 
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
219  | 
self.outf.write(str(Branch.open_containing(location)[0].revno()))  | 
220  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
221  | 
|
| 
1182
by Martin Pool
 - more disentangling of xml storage format from objects  | 
222  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
223  | 
class cmd_revision_info(Command):  | 
224  | 
"""Show revision number and revision id for a given revision identifier.  | 
|
225  | 
    """
 | 
|
226  | 
hidden = True  | 
|
227  | 
takes_args = ['revision_info*']  | 
|
228  | 
takes_options = ['revision']  | 
|
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
229  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
230  | 
    @display_command
 | 
| 
1185.5.4
by John Arbash Meinel
 Updated bzr revision-info, created tests.  | 
231  | 
def run(self, revision=None, revision_info_list=[]):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
232  | 
|
233  | 
revs = []  | 
|
234  | 
if revision is not None:  | 
|
235  | 
revs.extend(revision)  | 
|
| 
1185.5.4
by John Arbash Meinel
 Updated bzr revision-info, created tests.  | 
236  | 
if revision_info_list is not None:  | 
237  | 
for rev in revision_info_list:  | 
|
238  | 
revs.append(RevisionSpec(rev))  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
239  | 
if len(revs) == 0:  | 
240  | 
raise BzrCommandError('You must supply a revision identifier')  | 
|
241  | 
||
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
242  | 
b = WorkingTree.open_containing(u'.')[0].branch  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
243  | 
|
244  | 
for rev in revs:  | 
|
| 
1185.5.4
by John Arbash Meinel
 Updated bzr revision-info, created tests.  | 
245  | 
revinfo = rev.in_history(b)  | 
246  | 
if revinfo.revno is None:  | 
|
247  | 
print ' %s' % revinfo.rev_id  | 
|
248  | 
else:  | 
|
249  | 
print '%4d %s' % (revinfo.revno, revinfo.rev_id)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
250  | 
|
251  | 
||
252  | 
class cmd_add(Command):  | 
|
253  | 
"""Add specified files or directories.  | 
|
254  | 
||
255  | 
    In non-recursive mode, all the named items are added, regardless
 | 
|
256  | 
    of whether they were previously ignored.  A warning is given if
 | 
|
257  | 
    any of the named files are already versioned.
 | 
|
258  | 
||
259  | 
    In recursive mode (the default), files are treated the same way
 | 
|
260  | 
    but the behaviour for directories is different.  Directories that
 | 
|
261  | 
    are already versioned do not give a warning.  All directories,
 | 
|
262  | 
    whether already versioned or not, are searched for files or
 | 
|
263  | 
    subdirectories that are neither versioned or ignored, and these
 | 
|
264  | 
    are added.  This search proceeds recursively into versioned
 | 
|
265  | 
    directories.  If no names are given '.' is assumed.
 | 
|
266  | 
||
267  | 
    Therefore simply saying 'bzr add' will version all files that
 | 
|
268  | 
    are currently unknown.
 | 
|
269  | 
||
| 
1185.3.3
by Martin Pool
 - patch from mpe to automatically add parent directories  | 
270  | 
    Adding a file whose parent directory is not versioned will
 | 
271  | 
    implicitly add the parent, and so on up to the root. This means
 | 
|
| 
1759.2.1
by Jelmer Vernooij
 Fix some types (found using aspell).  | 
272  | 
    you should never need to explicitly add a directory, they'll just
 | 
| 
1185.3.3
by Martin Pool
 - patch from mpe to automatically add parent directories  | 
273  | 
    get added when you add a file in the directory.
 | 
| 
1185.33.90
by Martin Pool
 [merge] add --dry-run option (mpe)  | 
274  | 
|
275  | 
    --dry-run will show which files would be added, but not actually 
 | 
|
276  | 
    add them.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
277  | 
    """
 | 
278  | 
takes_args = ['file*']  | 
|
| 
1185.46.9
by Aaron Bentley
 Added verbose option to bzr add, to list all ignored files.  | 
279  | 
takes_options = ['no-recurse', 'dry-run', 'verbose']  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
280  | 
encoding_type = 'replace'  | 
| 
1185.53.1
by Michael Ellerman
 Add support for bzr add --dry-run  | 
281  | 
|
| 
1185.46.9
by Aaron Bentley
 Added verbose option to bzr add, to list all ignored files.  | 
282  | 
def run(self, file_list, no_recurse=False, dry_run=False, verbose=False):  | 
| 
1185.53.1
by Michael Ellerman
 Add support for bzr add --dry-run  | 
283  | 
import bzrlib.add  | 
284  | 
||
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
285  | 
action = bzrlib.add.AddAction(to_file=self.outf,  | 
| 
1757.2.6
by Robert Collins
 Steps towards a nicer smart add - unwind the conditional add logic - having parents not in the inventory was overly complicating the rest of the code.  | 
286  | 
should_print=(not is_quiet()))  | 
| 
1185.53.1
by Michael Ellerman
 Add support for bzr add --dry-run  | 
287  | 
|
| 
1185.46.8
by Aaron Bentley
 bzr add reports ignored patterns.  | 
288  | 
added, ignored = bzrlib.add.smart_add(file_list, not no_recurse,  | 
| 
1757.2.6
by Robert Collins
 Steps towards a nicer smart add - unwind the conditional add logic - having parents not in the inventory was overly complicating the rest of the code.  | 
289  | 
action=action, save=not dry_run)  | 
| 
1185.46.8
by Aaron Bentley
 bzr add reports ignored patterns.  | 
290  | 
if len(ignored) > 0:  | 
| 
1711.1.2
by Robert Collins
 'bzr add' is now less verbose in telling you what ignore globs were  | 
291  | 
if verbose:  | 
292  | 
for glob in sorted(ignored.keys()):  | 
|
| 
1185.46.9
by Aaron Bentley
 Added verbose option to bzr add, to list all ignored files.  | 
293  | 
for path in ignored[glob]:  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
294  | 
self.outf.write("ignored %s matching \"%s\"\n"  | 
295  | 
% (path, glob))  | 
|
| 
1711.1.2
by Robert Collins
 'bzr add' is now less verbose in telling you what ignore globs were  | 
296  | 
else:  | 
297  | 
match_len = 0  | 
|
298  | 
for glob, paths in ignored.items():  | 
|
299  | 
match_len += len(paths)  | 
|
| 
1685.1.69
by Wouter van Heyst
 merge bzr.dev 1740  | 
300  | 
self.outf.write("ignored %d file(s).\n" % match_len)  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
301  | 
self.outf.write("If you wish to add some of these files,"  | 
302  | 
" please add them by name.\n")  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
303  | 
|
304  | 
||
305  | 
class cmd_mkdir(Command):  | 
|
306  | 
"""Create a new versioned directory.  | 
|
307  | 
||
308  | 
    This is equivalent to creating the directory and then adding it.
 | 
|
309  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
310  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
311  | 
takes_args = ['dir+']  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
312  | 
encoding_type = 'replace'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
313  | 
|
314  | 
def run(self, dir_list):  | 
|
315  | 
for d in dir_list:  | 
|
316  | 
os.mkdir(d)  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
317  | 
wt, dd = WorkingTree.open_containing(d)  | 
| 
1508.1.5
by Robert Collins
 Move add from Branch to WorkingTree.  | 
318  | 
wt.add([dd])  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
319  | 
self.outf.write('added %s\n' % d)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
320  | 
|
321  | 
||
322  | 
class cmd_relpath(Command):  | 
|
323  | 
"""Show path of a file relative to root"""  | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
324  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
325  | 
takes_args = ['filename']  | 
326  | 
hidden = True  | 
|
327  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
328  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
329  | 
def run(self, filename):  | 
| 
1185.85.19
by John Arbash Meinel
 Updated bzr relpath  | 
330  | 
        # TODO: jam 20050106 Can relpath return a munged path if
 | 
331  | 
        #       sys.stdout encoding cannot represent it?
 | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
332  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
333  | 
self.outf.write(relpath)  | 
334  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
335  | 
|
336  | 
||
337  | 
class cmd_inventory(Command):  | 
|
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
338  | 
"""Show inventory of the current working copy or a revision.  | 
339  | 
||
340  | 
    It is possible to limit the output to a particular entry
 | 
|
341  | 
    type using the --kind option.  For example; --kind file.
 | 
|
342  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
343  | 
|
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
344  | 
takes_options = ['revision', 'show-ids', 'kind']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
345  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
346  | 
    @display_command
 | 
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
347  | 
def run(self, revision=None, show_ids=False, kind=None):  | 
348  | 
if kind and kind not in ['file', 'directory', 'symlink']:  | 
|
349  | 
raise BzrCommandError('invalid kind specified')  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
350  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
1185.11.5
by John Arbash Meinel
 Merged up-to-date against mainline, still broken.  | 
351  | 
if revision is None:  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
352  | 
inv = tree.read_working_inventory()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
353  | 
else:  | 
354  | 
if len(revision) > 1:  | 
|
355  | 
raise BzrCommandError('bzr inventory --revision takes'  | 
|
356  | 
' exactly one revision identifier')  | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
357  | 
inv = tree.branch.repository.get_revision_inventory(  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
358  | 
revision[0].in_history(tree.branch).rev_id)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
359  | 
|
360  | 
for path, entry in inv.entries():  | 
|
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
361  | 
if kind and kind != entry.kind:  | 
362  | 
                continue
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
363  | 
if show_ids:  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
364  | 
self.outf.write('%-50s %s\n' % (path, entry.file_id))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
365  | 
else:  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
366  | 
self.outf.write(path)  | 
367  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
368  | 
|
369  | 
||
370  | 
class cmd_mv(Command):  | 
|
371  | 
"""Move or rename a file.  | 
|
372  | 
||
373  | 
    usage:
 | 
|
374  | 
        bzr mv OLDNAME NEWNAME
 | 
|
375  | 
        bzr mv SOURCE... DESTINATION
 | 
|
376  | 
||
377  | 
    If the last argument is a versioned directory, all the other names
 | 
|
378  | 
    are moved into it.  Otherwise, there must be exactly two arguments
 | 
|
379  | 
    and the file is changed to a new name, which must not already exist.
 | 
|
380  | 
||
381  | 
    Files cannot be moved between branches.
 | 
|
382  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
383  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
384  | 
takes_args = ['names*']  | 
| 
1616.1.8
by Martin Pool
 Unify 'mv', 'move', 'rename'. (#5379, Matthew Fuller)  | 
385  | 
aliases = ['move', 'rename']  | 
| 
1185.85.26
by John Arbash Meinel
 bzr mv should succeed even if it can't display the paths.  | 
386  | 
encoding_type = 'replace'  | 
387  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
388  | 
def run(self, names_list):  | 
| 
1846.1.1
by Wouter van Heyst
 Don't fail on 'bzr mv', extract move tests from OldTests.  | 
389  | 
if names_list is None:  | 
390  | 
names_list = []  | 
|
391  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
392  | 
if len(names_list) < 2:  | 
393  | 
raise BzrCommandError("missing file argument")  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
394  | 
tree, rel_names = tree_files(names_list)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
395  | 
|
396  | 
if os.path.isdir(names_list[-1]):  | 
|
397  | 
            # move into existing directory
 | 
|
| 
1508.1.8
by Robert Collins
 move move() from Branch to WorkingTree.  | 
398  | 
for pair in tree.move(rel_names[:-1], rel_names[-1]):  | 
| 
1185.85.25
by John Arbash Meinel
 updated 'bzr mv'  | 
399  | 
self.outf.write("%s => %s\n" % pair)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
400  | 
else:  | 
401  | 
if len(names_list) != 2:  | 
|
402  | 
raise BzrCommandError('to mv multiple files the destination '  | 
|
403  | 
'must be a versioned directory')  | 
|
| 
1508.1.7
by Robert Collins
 Move rename_one from Branch to WorkingTree. (Robert Collins).  | 
404  | 
tree.rename_one(rel_names[0], rel_names[1])  | 
| 
1185.85.25
by John Arbash Meinel
 updated 'bzr mv'  | 
405  | 
self.outf.write("%s => %s\n" % (rel_names[0], rel_names[1]))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
406  | 
|
407  | 
||
408  | 
class cmd_pull(Command):  | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
409  | 
"""Turn this branch into a mirror of another branch.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
410  | 
|
411  | 
    This command only works on branches that have not diverged.  Branches are
 | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
412  | 
    considered diverged if the destination branch's most recent commit is one
 | 
413  | 
    that has not been merged (directly or indirectly) into the parent.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
414  | 
|
| 
1661.1.1
by Martin Pool
 [merge] olaf's --remember changes  | 
415  | 
    If branches have diverged, you can use 'bzr merge' to integrate the changes
 | 
416  | 
    from one into the other.  Once one branch has merged, the other should
 | 
|
417  | 
    be able to pull it again.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
418  | 
|
| 
1185.12.92
by Aaron Bentley
 Fixed pull help, renamed clobber to overwrite  | 
419  | 
    If you want to forget your local changes and just update your branch to
 | 
| 
1661.1.1
by Martin Pool
 [merge] olaf's --remember changes  | 
420  | 
    match the remote one, use pull --overwrite.
 | 
| 
1614.2.3
by Olaf Conradi
 In commands push and pull, moved help text for --remember down. It's not  | 
421  | 
|
422  | 
    If there is no default location set, the first pull will set it.  After
 | 
|
423  | 
    that, you can omit the location to use the default.  To change the
 | 
|
| 
1785.1.4
by John Arbash Meinel
 Update help for the new --remember semantics.  | 
424  | 
    default, use --remember. The value will only be saved if the remote
 | 
425  | 
    location can be accessed.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
426  | 
    """
 | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
427  | 
|
| 
1185.76.1
by Erik Bågfors
 Support for --revision in pull  | 
428  | 
takes_options = ['remember', 'overwrite', 'revision', 'verbose']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
429  | 
takes_args = ['location?']  | 
| 
1185.85.27
by John Arbash Meinel
 Updated bzr branch and bzr pull  | 
430  | 
encoding_type = 'replace'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
431  | 
|
| 
1185.76.1
by Erik Bågfors
 Support for --revision in pull  | 
432  | 
def run(self, location=None, remember=False, overwrite=False, revision=None, verbose=False):  | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
433  | 
        # FIXME: too much stuff is in the command class
 | 
434  | 
try:  | 
|
435  | 
tree_to = WorkingTree.open_containing(u'.')[0]  | 
|
436  | 
branch_to = tree_to.branch  | 
|
437  | 
except NoWorkingTree:  | 
|
438  | 
tree_to = None  | 
|
| 
1685.1.58
by Martin Pool
 urlutils.unescape_for_display should return Unicode  | 
439  | 
branch_to = Branch.open_containing(u'.')[0]  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
440  | 
|
441  | 
reader = None  | 
|
442  | 
if location is not None:  | 
|
443  | 
try:  | 
|
| 
1773.4.3
by Martin Pool
 [merge] bzr.dev  | 
444  | 
reader = bundle.read_bundle_from_url(location)  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
445  | 
except NotABundle:  | 
446  | 
pass # Continue on considering this url a Branch  | 
|
447  | 
||
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
448  | 
stored_loc = branch_to.get_parent()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
449  | 
if location is None:  | 
450  | 
if stored_loc is None:  | 
|
451  | 
raise BzrCommandError("No pull location known or specified.")  | 
|
452  | 
else:  | 
|
| 
1685.1.58
by Martin Pool
 urlutils.unescape_for_display should return Unicode  | 
453  | 
display_url = urlutils.unescape_for_display(stored_loc,  | 
454  | 
self.outf.encoding)  | 
|
455  | 
self.outf.write("Using saved location: %s\n" % display_url)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
456  | 
location = stored_loc  | 
| 
1185.56.1
by Michael Ellerman
 Simplify handling of DivergedBranches in cmd_pull()  | 
457  | 
|
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
458  | 
|
459  | 
if reader is not None:  | 
|
460  | 
install_bundle(branch_to.repository, reader)  | 
|
461  | 
branch_from = branch_to  | 
|
462  | 
else:  | 
|
463  | 
branch_from = Branch.open(location)  | 
|
464  | 
||
465  | 
if branch_to.get_parent() is None or remember:  | 
|
466  | 
branch_to.set_parent(branch_from.base)  | 
|
467  | 
||
468  | 
rev_id = None  | 
|
| 
1185.76.4
by Erik Bågfors
 expanded tabs  | 
469  | 
if revision is None:  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
470  | 
if reader is not None:  | 
| 
1793.2.2
by Aaron Bentley
 Move BundleReader into v07 serializer  | 
471  | 
rev_id = reader.target  | 
| 
1185.76.3
by Erik Bågfors
 changes for pull --revision based on input from John  | 
472  | 
elif len(revision) == 1:  | 
| 
1614.2.12
by Olaf Conradi
 Merge bzr.dev  | 
473  | 
rev_id = revision[0].in_history(branch_from).rev_id  | 
| 
1185.76.4
by Erik Bågfors
 expanded tabs  | 
474  | 
else:  | 
475  | 
raise BzrCommandError('bzr pull --revision takes one value.')  | 
|
| 
1185.76.1
by Erik Bågfors
 Support for --revision in pull  | 
476  | 
|
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
477  | 
old_rh = branch_to.revision_history()  | 
478  | 
if tree_to is not None:  | 
|
| 
1614.2.12
by Olaf Conradi
 Merge bzr.dev  | 
479  | 
count = tree_to.pull(branch_from, overwrite, rev_id)  | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
480  | 
else:  | 
| 
1614.2.12
by Olaf Conradi
 Merge bzr.dev  | 
481  | 
count = branch_to.pull(branch_from, overwrite, rev_id)  | 
| 
1185.40.2
by Robey Pointer
 when doing a 'pull', display the number of revisions pulled; on 'commit', display the current (new) revision number  | 
482  | 
note('%d revision(s) pulled.' % (count,))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
483  | 
|
| 
1185.31.5
by John Arbash Meinel
 Merged pull --verbose changes  | 
484  | 
if verbose:  | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
485  | 
new_rh = branch_to.revision_history()  | 
| 
1185.31.5
by John Arbash Meinel
 Merged pull --verbose changes  | 
486  | 
if old_rh != new_rh:  | 
487  | 
                # Something changed
 | 
|
488  | 
from bzrlib.log import show_changed_revisions  | 
|
| 
1685.1.1
by John Arbash Meinel
 [merge] the old bzr-encoding changes, reparenting them on bzr.dev  | 
489  | 
show_changed_revisions(branch_to, old_rh, new_rh,  | 
| 
1185.85.27
by John Arbash Meinel
 Updated bzr branch and bzr pull  | 
490  | 
to_file=self.outf)  | 
| 
1185.31.5
by John Arbash Meinel
 Merged pull --verbose changes  | 
491  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
492  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
493  | 
class cmd_push(Command):  | 
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
494  | 
"""Update a mirror of this branch.  | 
495  | 
    
 | 
|
496  | 
    The target branch will not have its working tree populated because this
 | 
|
497  | 
    is both expensive, and is not supported on remote file systems.
 | 
|
498  | 
    
 | 
|
499  | 
    Some smart servers or protocols *may* put the working tree in place in
 | 
|
500  | 
    the future.
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
501  | 
|
502  | 
    This command only works on branches that have not diverged.  Branches are
 | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
503  | 
    considered diverged if the destination branch's most recent commit is one
 | 
504  | 
    that has not been merged (directly or indirectly) by the source branch.
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
505  | 
|
506  | 
    If branches have diverged, you can use 'bzr push --overwrite' to replace
 | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
507  | 
    the other branch completely, discarding its unmerged changes.
 | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
508  | 
    
 | 
509  | 
    If you want to ensure you have the different changes in the other branch,
 | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
510  | 
    do a merge (see bzr help merge) from the other branch, and commit that.
 | 
511  | 
    After that you will be able to do a push without '--overwrite'.
 | 
|
| 
1614.2.3
by Olaf Conradi
 In commands push and pull, moved help text for --remember down. It's not  | 
512  | 
|
513  | 
    If there is no default push location set, the first push will set it.
 | 
|
514  | 
    After that, you can omit the location to use the default.  To change the
 | 
|
| 
1785.1.4
by John Arbash Meinel
 Update help for the new --remember semantics.  | 
515  | 
    default, use --remember. The value will only be saved if the remote
 | 
516  | 
    location can be accessed.
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
517  | 
    """
 | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
518  | 
|
| 
1185.85.31
by John Arbash Meinel
 Updated bzr push, including bringing in the unused --verbose flag.  | 
519  | 
takes_options = ['remember', 'overwrite', 'verbose',  | 
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
520  | 
Option('create-prefix',  | 
521  | 
help='Create the path leading up to the branch '  | 
|
522  | 
'if it does not already exist')]  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
523  | 
takes_args = ['location?']  | 
| 
1185.85.31
by John Arbash Meinel
 Updated bzr push, including bringing in the unused --verbose flag.  | 
524  | 
encoding_type = 'replace'  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
525  | 
|
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
526  | 
def run(self, location=None, remember=False, overwrite=False,  | 
| 
1185.31.5
by John Arbash Meinel
 Merged pull --verbose changes  | 
527  | 
create_prefix=False, verbose=False):  | 
| 
1185.33.45
by Martin Pool
 [merge] refactoring of branch vs working tree, etc (robertc)  | 
528  | 
        # FIXME: Way too big!  Put this into a function called from the
 | 
529  | 
        # command.
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
530  | 
|
| 
1692.3.1
by Robert Collins
 Fix push to work with just a branch, no need for a working tree.  | 
531  | 
br_from = Branch.open_containing('.')[0]  | 
532  | 
stored_loc = br_from.get_push_location()  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
533  | 
if location is None:  | 
534  | 
if stored_loc is None:  | 
|
535  | 
raise BzrCommandError("No push location known or specified.")  | 
|
536  | 
else:  | 
|
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
537  | 
display_url = urlutils.unescape_for_display(stored_loc,  | 
538  | 
self.outf.encoding)  | 
|
| 
1785.1.1
by John Arbash Meinel
 Fix the output of 'bzr push' so that it prints the location correctly.  | 
539  | 
self.outf.write("Using saved location: %s\n" % display_url)  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
540  | 
location = stored_loc  | 
| 
1685.1.22
by John Arbash Meinel
 cmd_push was passing the location directly to relpath, rather than a URL  | 
541  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
542  | 
to_transport = transport.get_transport(location)  | 
543  | 
location_url = to_transport.base  | 
|
| 
1685.1.70
by Wouter van Heyst
 working on get_parent, set_parent and relative urls, broken  | 
544  | 
|
545  | 
old_rh = []  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
546  | 
try:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
547  | 
dir_to = bzrdir.BzrDir.open(location_url)  | 
| 
1563.2.38
by Robert Collins
 make push preserve tree formats.  | 
548  | 
br_to = dir_to.open_branch()  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
549  | 
except NotBranchError:  | 
550  | 
            # create a branch.
 | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
551  | 
to_transport = to_transport.clone('..')  | 
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
552  | 
if not create_prefix:  | 
553  | 
try:  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
554  | 
relurl = to_transport.relpath(location_url)  | 
| 
1685.1.24
by John Arbash Meinel
 cmd_push should use URLs throughout.  | 
555  | 
mutter('creating directory %s => %s', location_url, relurl)  | 
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
556  | 
to_transport.mkdir(relurl)  | 
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
557  | 
except NoSuchFile:  | 
558  | 
raise BzrCommandError("Parent directory of %s "  | 
|
559  | 
"does not exist." % location)  | 
|
560  | 
else:  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
561  | 
current = to_transport.base  | 
562  | 
needed = [(to_transport, to_transport.relpath(location_url))]  | 
|
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
563  | 
while needed:  | 
564  | 
try:  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
565  | 
to_transport, relpath = needed[-1]  | 
566  | 
to_transport.mkdir(relpath)  | 
|
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
567  | 
needed.pop()  | 
568  | 
except NoSuchFile:  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
569  | 
new_transport = to_transport.clone('..')  | 
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
570  | 
needed.append((new_transport,  | 
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
571  | 
new_transport.relpath(to_transport.base)))  | 
572  | 
if new_transport.base == to_transport.base:  | 
|
| 
1616.1.16
by Martin Pool
 typo  | 
573  | 
raise BzrCommandError("Could not create "  | 
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
574  | 
"path prefix.")  | 
| 
1685.1.69
by Wouter van Heyst
 merge bzr.dev 1740  | 
575  | 
dir_to = br_from.bzrdir.clone(location_url,  | 
| 
1711.2.3
by John Arbash Meinel
 Fix push to only push revisions in the current ancestry. (bug???)  | 
576  | 
revision_id=br_from.last_revision())  | 
| 
1563.2.38
by Robert Collins
 make push preserve tree formats.  | 
577  | 
br_to = dir_to.open_branch()  | 
| 
1692.3.6
by Robert Collins
 Show the correct number of revisions pushed when pushing a new branch (Robert Collins).  | 
578  | 
count = len(br_to.revision_history())  | 
| 
1785.1.2
by John Arbash Meinel
 Push should only save the location if it can actually connect (doesn't need to succeed)  | 
579  | 
            # We successfully created the target, remember it
 | 
580  | 
if br_from.get_push_location() is None or remember:  | 
|
581  | 
br_from.set_push_location(br_to.base)  | 
|
| 
1692.3.6
by Robert Collins
 Show the correct number of revisions pushed when pushing a new branch (Robert Collins).  | 
582  | 
else:  | 
| 
1785.1.2
by John Arbash Meinel
 Push should only save the location if it can actually connect (doesn't need to succeed)  | 
583  | 
            # We were able to connect to the remote location, so remember it
 | 
584  | 
            # we don't need to successfully push because of possible divergence.
 | 
|
585  | 
if br_from.get_push_location() is None or remember:  | 
|
586  | 
br_from.set_push_location(br_to.base)  | 
|
| 
1692.3.6
by Robert Collins
 Show the correct number of revisions pushed when pushing a new branch (Robert Collins).  | 
587  | 
old_rh = br_to.revision_history()  | 
| 
1185.49.26
by John Arbash Meinel
 Adding tests for remote sftp branches without working trees, plus a bugfix to allow push to still work with a warning.  | 
588  | 
try:  | 
| 
1692.3.6
by Robert Collins
 Show the correct number of revisions pushed when pushing a new branch (Robert Collins).  | 
589  | 
try:  | 
590  | 
tree_to = dir_to.open_workingtree()  | 
|
591  | 
except errors.NotLocalUrl:  | 
|
592  | 
warning('This transport does not update the working '  | 
|
593  | 
'tree of: %s' % (br_to.base,))  | 
|
594  | 
count = br_to.pull(br_from, overwrite)  | 
|
595  | 
except NoWorkingTree:  | 
|
596  | 
count = br_to.pull(br_from, overwrite)  | 
|
597  | 
else:  | 
|
598  | 
count = tree_to.pull(br_from, overwrite)  | 
|
599  | 
except DivergedBranches:  | 
|
600  | 
raise BzrCommandError("These branches have diverged."  | 
|
601  | 
" Try a merge then push with overwrite.")  | 
|
| 
1185.33.44
by Martin Pool
 [patch] show number of revisions pushed/pulled/merged (Robey Pointer)  | 
602  | 
note('%d revision(s) pushed.' % (count,))  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
603  | 
|
| 
1185.31.5
by John Arbash Meinel
 Merged pull --verbose changes  | 
604  | 
if verbose:  | 
605  | 
new_rh = br_to.revision_history()  | 
|
606  | 
if old_rh != new_rh:  | 
|
607  | 
                # Something changed
 | 
|
608  | 
from bzrlib.log import show_changed_revisions  | 
|
| 
1185.85.31
by John Arbash Meinel
 Updated bzr push, including bringing in the unused --verbose flag.  | 
609  | 
show_changed_revisions(br_to, old_rh, new_rh,  | 
610  | 
to_file=self.outf)  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
611  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
612  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
613  | 
class cmd_branch(Command):  | 
614  | 
"""Create a new copy of a branch.  | 
|
615  | 
||
616  | 
    If the TO_LOCATION is omitted, the last component of the FROM_LOCATION will
 | 
|
617  | 
    be used.  In other words, "branch ../foo/bar" will attempt to create ./bar.
 | 
|
618  | 
||
619  | 
    To retrieve the branch as of a particular revision, supply the --revision
 | 
|
620  | 
    parameter, as in "branch foo/bar -r 5".
 | 
|
| 
1185.10.2
by Aaron Bentley
 Updated help message  | 
621  | 
|
622  | 
    --basis is to speed up branching from remote branches.  When specified, it
 | 
|
623  | 
    copies all the file-contents, inventory and revision data from the basis
 | 
|
624  | 
    branch before copying anything from the remote branch.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
625  | 
    """
 | 
626  | 
takes_args = ['from_location', 'to_location?']  | 
|
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
627  | 
takes_options = ['revision', 'basis']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
628  | 
aliases = ['get', 'clone']  | 
629  | 
||
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
630  | 
def run(self, from_location, to_location=None, revision=None, basis=None):  | 
| 
1185.17.3
by Martin Pool
 [pick] larger read lock scope for branch command  | 
631  | 
if revision is None:  | 
632  | 
revision = [None]  | 
|
633  | 
elif len(revision) > 1:  | 
|
634  | 
raise BzrCommandError(  | 
|
635  | 
'bzr branch --revision takes exactly 1 revision value')  | 
|
636  | 
try:  | 
|
637  | 
br_from = Branch.open(from_location)  | 
|
638  | 
except OSError, e:  | 
|
639  | 
if e.errno == errno.ENOENT:  | 
|
640  | 
raise BzrCommandError('Source location "%s" does not'  | 
|
641  | 
' exist.' % to_location)  | 
|
642  | 
else:  | 
|
643  | 
                raise
 | 
|
644  | 
br_from.lock_read()  | 
|
645  | 
try:  | 
|
| 
1185.10.1
by Aaron Bentley
 Added --basis option to bzr branch  | 
646  | 
if basis is not None:  | 
| 
1534.4.50
by Robert Collins
 Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.  | 
647  | 
basis_dir = bzrdir.BzrDir.open_containing(basis)[0]  | 
| 
1185.10.1
by Aaron Bentley
 Added --basis option to bzr branch  | 
648  | 
else:  | 
| 
1534.4.50
by Robert Collins
 Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.  | 
649  | 
basis_dir = None  | 
| 
1185.8.4
by Aaron Bentley
 Fixed branch -r  | 
650  | 
if len(revision) == 1 and revision[0] is not None:  | 
| 
1390
by Robert Collins
 pair programming worx... merge integration and weave  | 
651  | 
revision_id = revision[0].in_history(br_from)[1]  | 
| 
1185.8.4
by Aaron Bentley
 Fixed branch -r  | 
652  | 
else:  | 
| 
1534.4.50
by Robert Collins
 Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.  | 
653  | 
                # FIXME - wt.last_revision, fallback to branch, fall back to
 | 
654  | 
                # None or perhaps NULL_REVISION to mean copy nothing
 | 
|
655  | 
                # RBC 20060209
 | 
|
656  | 
revision_id = br_from.last_revision()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
657  | 
if to_location is None:  | 
658  | 
to_location = os.path.basename(from_location.rstrip("/\\"))  | 
|
| 
1442.1.71
by Robert Collins
 'bzr branch' sets the branch-name,  | 
659  | 
name = None  | 
660  | 
else:  | 
|
661  | 
name = os.path.basename(to_location) + '\n'  | 
|
| 
1685.1.20
by John Arbash Meinel
 More changes to get 'bzr branch' and 'bzr pull' to work  | 
662  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
663  | 
to_transport = transport.get_transport(to_location)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
664  | 
try:  | 
| 
1685.1.20
by John Arbash Meinel
 More changes to get 'bzr branch' and 'bzr pull' to work  | 
665  | 
to_transport.mkdir('.')  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
666  | 
except errors.FileExists:  | 
| 
1685.1.20
by John Arbash Meinel
 More changes to get 'bzr branch' and 'bzr pull' to work  | 
667  | 
raise BzrCommandError('Target directory "%s" already'  | 
668  | 
' exists.' % to_location)  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
669  | 
except errors.NoSuchFile:  | 
| 
1685.1.20
by John Arbash Meinel
 More changes to get 'bzr branch' and 'bzr pull' to work  | 
670  | 
raise BzrCommandError('Parent of "%s" does not exist.' %  | 
671  | 
to_location)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
672  | 
try:  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
673  | 
                # preserve whatever source format we have.
 | 
| 
1685.1.20
by John Arbash Meinel
 More changes to get 'bzr branch' and 'bzr pull' to work  | 
674  | 
dir = br_from.bzrdir.sprout(to_transport.base,  | 
675  | 
revision_id, basis_dir)  | 
|
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
676  | 
branch = dir.open_branch()  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
677  | 
except errors.NoSuchRevision:  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
678  | 
to_transport.delete_tree('.')  | 
| 
1466
by Robert Collins
 revision may be None in cmd_branch, do not treat as an int.  | 
679  | 
msg = "The branch %s has no revision %s." % (from_location, revision[0])  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
680  | 
raise BzrCommandError(msg)  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
681  | 
except errors.UnlistableBranch:  | 
682  | 
osutils.rmtree(to_location)  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
683  | 
msg = "The branch %s cannot be used as a --basis" % (basis,)  | 
| 
1442.1.71
by Robert Collins
 'bzr branch' sets the branch-name,  | 
684  | 
raise BzrCommandError(msg)  | 
685  | 
if name:  | 
|
| 
1185.65.27
by Robert Collins
 Tweak storage towards mergability.  | 
686  | 
branch.control_files.put_utf8('branch-name', name)  | 
| 
1185.33.44
by Martin Pool
 [patch] show number of revisions pushed/pulled/merged (Robey Pointer)  | 
687  | 
note('Branched %d revision(s).' % branch.revno())  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
688  | 
finally:  | 
| 
1185.17.3
by Martin Pool
 [pick] larger read lock scope for branch command  | 
689  | 
br_from.unlock()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
690  | 
|
691  | 
||
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
692  | 
class cmd_checkout(Command):  | 
693  | 
"""Create a new checkout of an existing branch.  | 
|
694  | 
||
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
695  | 
    If BRANCH_LOCATION is omitted, checkout will reconstitute a working tree for
 | 
696  | 
    the branch found in '.'. This is useful if you have removed the working tree
 | 
|
697  | 
    or if it was never created - i.e. if you pushed the branch to its current
 | 
|
698  | 
    location using SFTP.
 | 
|
699  | 
    
 | 
|
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
700  | 
    If the TO_LOCATION is omitted, the last component of the BRANCH_LOCATION will
 | 
701  | 
    be used.  In other words, "checkout ../foo/bar" will attempt to create ./bar.
 | 
|
702  | 
||
703  | 
    To retrieve the branch as of a particular revision, supply the --revision
 | 
|
704  | 
    parameter, as in "checkout foo/bar -r 5". Note that this will be immediately
 | 
|
705  | 
    out of date [so you cannot commit] but it may be useful (i.e. to examine old
 | 
|
706  | 
    code.)
 | 
|
707  | 
||
708  | 
    --basis is to speed up checking out from remote branches.  When specified, it
 | 
|
709  | 
    uses the inventory and file contents from the basis branch in preference to the
 | 
|
| 
1185.50.88
by John Arbash Meinel
 --basis has been implemented for checkouts.  | 
710  | 
    branch being checked out.
 | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
711  | 
    """
 | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
712  | 
takes_args = ['branch_location?', 'to_location?']  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
713  | 
takes_options = ['revision', # , 'basis']  | 
714  | 
Option('lightweight',  | 
|
715  | 
help="perform a lightweight checkout. Lightweight "  | 
|
716  | 
                                 "checkouts depend on access to the branch for "
 | 
|
717  | 
                                 "every operation. Normal checkouts can perform "
 | 
|
718  | 
                                 "common operations like diff and status without "
 | 
|
719  | 
                                 "such access, and also support local commits."
 | 
|
720  | 
                            ),
 | 
|
721  | 
                     ]
 | 
|
| 
1733.2.8
by Michael Ellerman
 Add CVS compatible aliases for checkout and annotate, from fullermd.  | 
722  | 
aliases = ['co']  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
723  | 
|
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
724  | 
def run(self, branch_location=None, to_location=None, revision=None, basis=None,  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
725  | 
lightweight=False):  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
726  | 
if revision is None:  | 
727  | 
revision = [None]  | 
|
728  | 
elif len(revision) > 1:  | 
|
729  | 
raise BzrCommandError(  | 
|
730  | 
'bzr checkout --revision takes exactly 1 revision value')  | 
|
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
731  | 
if branch_location is None:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
732  | 
branch_location = osutils.getcwd()  | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
733  | 
to_location = branch_location  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
734  | 
source = Branch.open(branch_location)  | 
735  | 
if len(revision) == 1 and revision[0] is not None:  | 
|
736  | 
revision_id = revision[0].in_history(source)[1]  | 
|
737  | 
else:  | 
|
738  | 
revision_id = None  | 
|
739  | 
if to_location is None:  | 
|
740  | 
to_location = os.path.basename(branch_location.rstrip("/\\"))  | 
|
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
741  | 
        # if the source and to_location are the same, 
 | 
742  | 
        # and there is no working tree,
 | 
|
743  | 
        # then reconstitute a branch
 | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
744  | 
if (osutils.abspath(to_location) ==  | 
745  | 
osutils.abspath(branch_location)):  | 
|
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
746  | 
try:  | 
747  | 
source.bzrdir.open_workingtree()  | 
|
748  | 
except errors.NoWorkingTree:  | 
|
749  | 
source.bzrdir.create_workingtree()  | 
|
750  | 
                return
 | 
|
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
751  | 
try:  | 
752  | 
os.mkdir(to_location)  | 
|
753  | 
except OSError, e:  | 
|
754  | 
if e.errno == errno.EEXIST:  | 
|
755  | 
raise BzrCommandError('Target directory "%s" already'  | 
|
756  | 
' exists.' % to_location)  | 
|
757  | 
if e.errno == errno.ENOENT:  | 
|
758  | 
raise BzrCommandError('Parent of "%s" does not exist.' %  | 
|
759  | 
to_location)  | 
|
760  | 
else:  | 
|
761  | 
                raise
 | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
762  | 
old_format = bzrdir.BzrDirFormat.get_default_format()  | 
763  | 
bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())  | 
|
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
764  | 
try:  | 
765  | 
if lightweight:  | 
|
766  | 
checkout = bzrdir.BzrDirMetaFormat1().initialize(to_location)  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
767  | 
branch.BranchReferenceFormat().initialize(checkout, source)  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
768  | 
else:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
769  | 
checkout_branch = bzrdir.BzrDir.create_branch_convenience(  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
770  | 
to_location, force_new_tree=False)  | 
771  | 
checkout = checkout_branch.bzrdir  | 
|
772  | 
checkout_branch.bind(source)  | 
|
773  | 
if revision_id is not None:  | 
|
774  | 
rh = checkout_branch.revision_history()  | 
|
775  | 
checkout_branch.set_revision_history(rh[:rh.index(revision_id) + 1])  | 
|
776  | 
checkout.create_workingtree(revision_id)  | 
|
777  | 
finally:  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
778  | 
bzrdir.BzrDirFormat.set_default_format(old_format)  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
779  | 
|
780  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
781  | 
class cmd_renames(Command):  | 
782  | 
"""Show list of renamed files.  | 
|
783  | 
    """
 | 
|
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
784  | 
    # TODO: Option to show renames between two historical versions.
 | 
785  | 
||
786  | 
    # TODO: Only show renames under dir, rather than in the whole branch.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
787  | 
takes_args = ['dir?']  | 
788  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
789  | 
    @display_command
 | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
790  | 
def run(self, dir=u'.'):  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
791  | 
from bzrlib.tree import find_renames  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
792  | 
tree = WorkingTree.open_containing(dir)[0]  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
793  | 
old_inv = tree.basis_tree().inventory  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
794  | 
new_inv = tree.read_working_inventory()  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
795  | 
renames = list(find_renames(old_inv, new_inv))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
796  | 
renames.sort()  | 
797  | 
for old_name, new_name in renames:  | 
|
| 
1185.85.32
by John Arbash Meinel
 Updated bzr renames  | 
798  | 
self.outf.write("%s => %s\n" % (old_name, new_name))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
799  | 
|
800  | 
||
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
801  | 
class cmd_update(Command):  | 
802  | 
"""Update a tree to have the latest code committed to its branch.  | 
|
803  | 
    
 | 
|
804  | 
    This will perform a merge into the working tree, and may generate
 | 
|
| 
1587.1.10
by Robert Collins
 update updates working tree and branch together.  | 
805  | 
    conflicts. If you have any local changes, you will still 
 | 
806  | 
    need to commit them after the update for the update to be complete.
 | 
|
807  | 
    
 | 
|
808  | 
    If you want to discard your local changes, you can just do a 
 | 
|
809  | 
    'bzr revert' instead of 'bzr commit' after the update.
 | 
|
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
810  | 
    """
 | 
811  | 
takes_args = ['dir?']  | 
|
| 
1815.3.1
by Stefan (metze) Metzmacher
 add 'up' as alias for 'update'  | 
812  | 
aliases = ['up']  | 
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
813  | 
|
814  | 
def run(self, dir='.'):  | 
|
815  | 
tree = WorkingTree.open_containing(dir)[0]  | 
|
816  | 
tree.lock_write()  | 
|
817  | 
try:  | 
|
| 
1830.1.1
by John Arbash Meinel
 Print up to date even if bound, also always print out current revno.  | 
818  | 
last_rev = tree.last_revision()  | 
819  | 
if last_rev == tree.branch.last_revision():  | 
|
| 
1587.1.11
by Robert Collins
 Local commits appear to be working properly.  | 
820  | 
                # may be up to date, check master too.
 | 
821  | 
master = tree.branch.get_master_branch()  | 
|
| 
1830.1.1
by John Arbash Meinel
 Print up to date even if bound, also always print out current revno.  | 
822  | 
if master is None or last_rev == master.last_revision():  | 
823  | 
revno = tree.branch.revision_id_to_revno(last_rev)  | 
|
824  | 
note("Tree is up to date at revision %d." % (revno,))  | 
|
825  | 
return 0  | 
|
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
826  | 
conflicts = tree.update()  | 
| 
1830.1.1
by John Arbash Meinel
 Print up to date even if bound, also always print out current revno.  | 
827  | 
revno = tree.branch.revision_id_to_revno(tree.last_revision())  | 
828  | 
note('Updated to revision %d.' % (revno,))  | 
|
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
829  | 
if conflicts != 0:  | 
830  | 
return 1  | 
|
831  | 
else:  | 
|
832  | 
return 0  | 
|
833  | 
finally:  | 
|
834  | 
tree.unlock()  | 
|
835  | 
||
836  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
837  | 
class cmd_info(Command):  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
838  | 
"""Show information about a working tree, branch or repository.  | 
839  | 
||
840  | 
    This command will show all known locations and formats associated to the
 | 
|
841  | 
    tree, branch or repository.  Statistical information is included with
 | 
|
842  | 
    each report.
 | 
|
843  | 
||
844  | 
    Branches and working trees will also report any missing revisions.
 | 
|
845  | 
    """
 | 
|
846  | 
takes_args = ['location?']  | 
|
| 
1624.3.21
by Olaf Conradi
 Make bzr info command work on both local and remote locations. Support  | 
847  | 
takes_options = ['verbose']  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
848  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
849  | 
    @display_command
 | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
850  | 
def run(self, location=None, verbose=False):  | 
851  | 
from bzrlib.info import show_bzrdir_info  | 
|
852  | 
show_bzrdir_info(bzrdir.BzrDir.open_containing(location)[0],  | 
|
853  | 
verbose=verbose)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
854  | 
|
855  | 
||
856  | 
class cmd_remove(Command):  | 
|
857  | 
"""Make a file unversioned.  | 
|
858  | 
||
859  | 
    This makes bzr stop tracking changes to a versioned file.  It does
 | 
|
860  | 
    not delete the working copy.
 | 
|
| 
1551.6.26
by Aaron Bentley
 Add support for remove --new  | 
861  | 
|
862  | 
    You can specify one or more files, and/or --new.  If you specify --new,
 | 
|
863  | 
    only 'added' files will be removed.  If you specify both, then new files
 | 
|
864  | 
    in the specified directories will be removed.  If the directories are
 | 
|
865  | 
    also new, they will also be removed.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
866  | 
    """
 | 
| 
1551.6.26
by Aaron Bentley
 Add support for remove --new  | 
867  | 
takes_args = ['file*']  | 
868  | 
takes_options = ['verbose', Option('new', help='remove newly-added files')]  | 
|
| 
1424
by Robert Collins
 add rm alias to remove  | 
869  | 
aliases = ['rm']  | 
| 
1685.1.77
by Wouter van Heyst
 WorkingTree.remove takes an optional output file  | 
870  | 
encoding_type = 'replace'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
871  | 
|
| 
1551.6.26
by Aaron Bentley
 Add support for remove --new  | 
872  | 
def run(self, file_list, verbose=False, new=False):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
873  | 
tree, file_list = tree_files(file_list)  | 
| 
1551.6.26
by Aaron Bentley
 Add support for remove --new  | 
874  | 
if new is False:  | 
875  | 
if file_list is None:  | 
|
876  | 
raise BzrCommandError('Specify one or more files to remove, or'  | 
|
877  | 
' use --new.')  | 
|
878  | 
else:  | 
|
| 
1852.10.3
by Robert Collins
 Remove all uses of compare_trees and replace with Tree.changes_from throughout bzrlib.  | 
879  | 
added = tree.changes_from(tree.basis_tree(),  | 
880  | 
specific_files=file_list).added  | 
|
881  | 
file_list = sorted([f[0] for f in added], reverse=True)  | 
|
| 
1551.6.26
by Aaron Bentley
 Add support for remove --new  | 
882  | 
if len(file_list) == 0:  | 
883  | 
raise BzrCommandError('No matching files.')  | 
|
| 
1685.1.77
by Wouter van Heyst
 WorkingTree.remove takes an optional output file  | 
884  | 
tree.remove(file_list, verbose=verbose, to_file=self.outf)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
885  | 
|
886  | 
||
887  | 
class cmd_file_id(Command):  | 
|
888  | 
"""Print file_id of a particular file or directory.  | 
|
889  | 
||
890  | 
    The file_id is assigned when the file is first added and remains the
 | 
|
891  | 
    same through all revisions where the file exists, even when it is
 | 
|
892  | 
    moved or renamed.
 | 
|
893  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
894  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
895  | 
hidden = True  | 
896  | 
takes_args = ['filename']  | 
|
| 
1185.85.35
by John Arbash Meinel
 Updated file-path  | 
897  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
898  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
899  | 
def run(self, filename):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
900  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
901  | 
i = tree.inventory.path2id(relpath)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
902  | 
if i == None:  | 
903  | 
raise BzrError("%r is not a versioned file" % filename)  | 
|
904  | 
else:  | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
905  | 
self.outf.write(i + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
906  | 
|
907  | 
||
908  | 
class cmd_file_path(Command):  | 
|
909  | 
"""Print path of file_ids to a file or directory.  | 
|
910  | 
||
911  | 
    This prints one line for each directory down to the target,
 | 
|
| 
1185.85.35
by John Arbash Meinel
 Updated file-path  | 
912  | 
    starting at the branch root.
 | 
913  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
914  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
915  | 
hidden = True  | 
916  | 
takes_args = ['filename']  | 
|
| 
1185.85.35
by John Arbash Meinel
 Updated file-path  | 
917  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
918  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
919  | 
def run(self, filename):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
920  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
921  | 
inv = tree.inventory  | 
|
| 
1442.1.64
by Robert Collins
 Branch.open_containing now returns a tuple (Branch, relative-path).  | 
922  | 
fid = inv.path2id(relpath)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
923  | 
if fid == None:  | 
924  | 
raise BzrError("%r is not a versioned file" % filename)  | 
|
925  | 
for fip in inv.get_idpath(fid):  | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
926  | 
self.outf.write(fip + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
927  | 
|
928  | 
||
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
929  | 
class cmd_reconcile(Command):  | 
930  | 
"""Reconcile bzr metadata in a branch.  | 
|
931  | 
||
932  | 
    This can correct data mismatches that may have been caused by
 | 
|
933  | 
    previous ghost operations or bzr upgrades. You should only
 | 
|
934  | 
    need to run this command if 'bzr check' or a bzr developer 
 | 
|
935  | 
    advises you to run it.
 | 
|
936  | 
||
937  | 
    If a second branch is provided, cross-branch reconciliation is
 | 
|
938  | 
    also attempted, which will check that data like the tree root
 | 
|
939  | 
    id which was not present in very early bzr versions is represented
 | 
|
940  | 
    correctly in both branches.
 | 
|
941  | 
||
942  | 
    At the same time it is run it may recompress data resulting in 
 | 
|
943  | 
    a potential saving in disk space or performance gain.
 | 
|
944  | 
||
945  | 
    The branch *MUST* be on a listable system such as local disk or sftp.
 | 
|
946  | 
    """
 | 
|
947  | 
takes_args = ['branch?']  | 
|
948  | 
||
949  | 
def run(self, branch="."):  | 
|
950  | 
from bzrlib.reconcile import reconcile  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
951  | 
dir = bzrdir.BzrDir.open(branch)  | 
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
952  | 
reconcile(dir)  | 
953  | 
||
954  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
955  | 
class cmd_revision_history(Command):  | 
| 
1733.2.1
by Michael Ellerman
 Add an optional location parameter to the 'revision-history' command.  | 
956  | 
"""Display the list of revision ids on a branch."""  | 
957  | 
takes_args = ['location?']  | 
|
958  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
959  | 
hidden = True  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
960  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
961  | 
    @display_command
 | 
| 
1733.2.1
by Michael Ellerman
 Add an optional location parameter to the 'revision-history' command.  | 
962  | 
def run(self, location="."):  | 
963  | 
branch = Branch.open_containing(location)[0]  | 
|
964  | 
for revid in branch.revision_history():  | 
|
| 
1733.2.4
by Michael Ellerman
 Merge bzr.dev, fix minor conflict in cmd_revision_history().  | 
965  | 
self.outf.write(revid)  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
966  | 
self.outf.write('\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
967  | 
|
968  | 
||
| 
1225
by Martin Pool
 - branch now tracks ancestry - all merged revisions  | 
969  | 
class cmd_ancestry(Command):  | 
970  | 
"""List all revisions merged into this branch."""  | 
|
| 
1733.2.2
by Michael Ellerman
 Add optional location to ancestry and fix behaviour for checkouts.  | 
971  | 
takes_args = ['location?']  | 
972  | 
||
| 
1225
by Martin Pool
 - branch now tracks ancestry - all merged revisions  | 
973  | 
hidden = True  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
974  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
975  | 
    @display_command
 | 
| 
1733.2.2
by Michael Ellerman
 Add optional location to ancestry and fix behaviour for checkouts.  | 
976  | 
def run(self, location="."):  | 
977  | 
try:  | 
|
978  | 
wt = WorkingTree.open_containing(location)[0]  | 
|
979  | 
except errors.NoWorkingTree:  | 
|
980  | 
b = Branch.open(location)  | 
|
981  | 
last_revision = b.last_revision()  | 
|
982  | 
else:  | 
|
983  | 
b = wt.branch  | 
|
984  | 
last_revision = wt.last_revision()  | 
|
985  | 
||
986  | 
revision_ids = b.repository.get_ancestry(last_revision)  | 
|
| 
1668.1.14
by Martin Pool
 merge olaf - InvalidRevisionId fixes  | 
987  | 
assert revision_ids[0] == None  | 
988  | 
revision_ids.pop(0)  | 
|
989  | 
for revision_id in revision_ids:  | 
|
| 
1685.1.69
by Wouter van Heyst
 merge bzr.dev 1740  | 
990  | 
self.outf.write(revision_id + '\n')  | 
| 
1225
by Martin Pool
 - branch now tracks ancestry - all merged revisions  | 
991  | 
|
992  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
993  | 
class cmd_init(Command):  | 
994  | 
"""Make a directory into a versioned branch.  | 
|
995  | 
||
996  | 
    Use this to create an empty branch, or before importing an
 | 
|
997  | 
    existing project.
 | 
|
998  | 
||
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
999  | 
    If there is a repository in a parent directory of the location, then 
 | 
1000  | 
    the history of the branch will be stored in the repository.  Otherwise
 | 
|
1001  | 
    init creates a standalone branch which carries its own history in 
 | 
|
1002  | 
    .bzr.
 | 
|
1003  | 
||
1004  | 
    If there is already a branch at the location but it has no working tree,
 | 
|
1005  | 
    the tree can be populated with 'bzr checkout'.
 | 
|
1006  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1007  | 
    Recipe for importing a tree of files:
 | 
1008  | 
        cd ~/project
 | 
|
1009  | 
        bzr init
 | 
|
| 
1185.12.93
by Aaron Bentley
 Fixed obsolete help  | 
1010  | 
        bzr add .
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1011  | 
        bzr status
 | 
1012  | 
        bzr commit -m 'imported project'
 | 
|
1013  | 
    """
 | 
|
| 
1185.16.138
by Martin Pool
 [patch] 'bzr init DIR' (John)  | 
1014  | 
takes_args = ['location?']  | 
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
1015  | 
takes_options = [  | 
1016  | 
Option('format',  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1017  | 
help='Specify a format for this branch. Current'  | 
1018  | 
                                 ' formats are: default, knit, metaweave and'
 | 
|
1019  | 
                                 ' weave. Default is knit; metaweave and'
 | 
|
1020  | 
' weave are deprecated',  | 
|
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
1021  | 
type=get_format_type),  | 
1022  | 
                     ]
 | 
|
1023  | 
def run(self, location=None, format=None):  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1024  | 
if format is None:  | 
1025  | 
format = get_format_type('default')  | 
|
| 
1185.16.138
by Martin Pool
 [patch] 'bzr init DIR' (John)  | 
1026  | 
if location is None:  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1027  | 
location = u'.'  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1028  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1029  | 
to_transport = transport.get_transport(location)  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1030  | 
|
1031  | 
        # The path has to exist to initialize a
 | 
|
1032  | 
        # branch inside of it.
 | 
|
1033  | 
        # Just using os.mkdir, since I don't
 | 
|
1034  | 
        # believe that we want to create a bunch of
 | 
|
1035  | 
        # locations if the user supplies an extended path
 | 
|
1036  | 
        # TODO: create-prefix
 | 
|
1037  | 
try:  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1038  | 
to_transport.mkdir('.')  | 
| 
1830.4.8
by Wouter van Heyst
 clean up imports (and get if collapsing right)  | 
1039  | 
except errors.FileExists:  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1040  | 
            pass
 | 
| 
1830.4.1
by Wouter van Heyst
 Allow bzr init to create remote branches  | 
1041  | 
|
| 
1654.1.4
by Robert Collins
 Teach `bzr init` how to init at the root of a repository.  | 
1042  | 
try:  | 
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1043  | 
existing_bzrdir = bzrdir.BzrDir.open(location)  | 
| 
1654.1.4
by Robert Collins
 Teach `bzr init` how to init at the root of a repository.  | 
1044  | 
except NotBranchError:  | 
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1045  | 
            # really a NotBzrDir error...
 | 
| 
1654.1.4
by Robert Collins
 Teach `bzr init` how to init at the root of a repository.  | 
1046  | 
bzrdir.BzrDir.create_branch_convenience(location, format=format)  | 
1047  | 
else:  | 
|
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1048  | 
if existing_bzrdir.has_branch():  | 
| 
1830.4.8
by Wouter van Heyst
 clean up imports (and get if collapsing right)  | 
1049  | 
if (isinstance(to_transport, LocalTransport)  | 
1050  | 
and not existing_bzrdir.has_workingtree()):  | 
|
| 
1830.4.1
by Wouter van Heyst
 Allow bzr init to create remote branches  | 
1051  | 
raise errors.BranchExistsWithoutWorkingTree(location)  | 
1052  | 
raise errors.AlreadyBranchError(location)  | 
|
| 
1654.1.4
by Robert Collins
 Teach `bzr init` how to init at the root of a repository.  | 
1053  | 
else:  | 
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1054  | 
existing_bzrdir.create_branch()  | 
1055  | 
existing_bzrdir.create_workingtree()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1056  | 
|
1057  | 
||
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
1058  | 
class cmd_init_repository(Command):  | 
| 
1658.1.6
by Martin Pool
 init-repo shouldn't insist on creating a new directory (Malone #38331)  | 
1059  | 
"""Create a shared repository to hold branches.  | 
1060  | 
||
1061  | 
    New branches created under the repository directory will store their revisions
 | 
|
1062  | 
    in the repository, not in the branch directory, if the branch format supports
 | 
|
1063  | 
    shared storage.
 | 
|
1064  | 
||
| 
1662.1.11
by Martin Pool
 Better help for init-repo (Erik)  | 
1065  | 
    example:
 | 
| 
1658.1.6
by Martin Pool
 init-repo shouldn't insist on creating a new directory (Malone #38331)  | 
1066  | 
        bzr init-repo repo
 | 
| 
1662.1.11
by Martin Pool
 Better help for init-repo (Erik)  | 
1067  | 
        bzr init repo/trunk
 | 
1068  | 
        bzr checkout --lightweight repo/trunk trunk-checkout
 | 
|
1069  | 
        cd trunk-checkout
 | 
|
| 
1658.1.6
by Martin Pool
 init-repo shouldn't insist on creating a new directory (Malone #38331)  | 
1070  | 
        (add files here)
 | 
1071  | 
    """
 | 
|
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
1072  | 
takes_args = ["location"]  | 
1073  | 
takes_options = [Option('format',  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1074  | 
help='Specify a format for this repository.'  | 
1075  | 
                                 ' Current formats are: default, knit,'
 | 
|
1076  | 
                                 ' metaweave and weave. Default is knit;'
 | 
|
1077  | 
' metaweave and weave are deprecated',  | 
|
| 
1624.2.1
by Erik Bågfors
 support for --tree in bzr init-repo  | 
1078  | 
type=get_format_type),  | 
| 
1624.2.4
by Erik Bågfors
 rename --tree to --trees  | 
1079  | 
Option('trees',  | 
| 
1624.2.1
by Erik Bågfors
 support for --tree in bzr init-repo  | 
1080  | 
help='Allows branches in repository to have'  | 
1081  | 
' a working tree')]  | 
|
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
1082  | 
aliases = ["init-repo"]  | 
| 
1624.2.4
by Erik Bågfors
 rename --tree to --trees  | 
1083  | 
def run(self, location, format=None, trees=False):  | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
1084  | 
if format is None:  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1085  | 
format = get_format_type('default')  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1086  | 
|
1087  | 
if location is None:  | 
|
1088  | 
location = '.'  | 
|
1089  | 
||
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1090  | 
to_transport = transport.get_transport(location)  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1091  | 
try:  | 
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1092  | 
to_transport.mkdir('.')  | 
| 
1830.4.8
by Wouter van Heyst
 clean up imports (and get if collapsing right)  | 
1093  | 
except errors.FileExists:  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1094  | 
            pass
 | 
1095  | 
||
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1096  | 
newdir = format.initialize_on_transport(to_transport)  | 
| 
1558.5.2
by Aaron Bentley
 Created *shared* repositories...  | 
1097  | 
repo = newdir.create_repository(shared=True)  | 
| 
1624.2.4
by Erik Bågfors
 rename --tree to --trees  | 
1098  | 
repo.set_make_working_trees(trees)  | 
| 
1558.5.1
by Aaron Bentley
 Added make-repository command  | 
1099  | 
|
1100  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1101  | 
class cmd_diff(Command):  | 
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1102  | 
"""Show differences in the working tree or between revisions.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1103  | 
    
 | 
1104  | 
    If files are listed, only the changes in those files are listed.
 | 
|
1105  | 
    Otherwise, all changes for the tree are listed.
 | 
|
1106  | 
||
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1107  | 
    "bzr diff -p1" is equivalent to "bzr diff --prefix old/:new/", and
 | 
1108  | 
    produces patches suitable for "patch -p1".
 | 
|
1109  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1110  | 
    examples:
 | 
1111  | 
        bzr diff
 | 
|
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1112  | 
            Shows the difference in the working tree versus the last commit
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1113  | 
        bzr diff -r1
 | 
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1114  | 
            Difference between the working tree and revision 1
 | 
| 
1185.1.2
by Martin Pool
 - merge various windows and other fixes from Ollie Rutherfurd  | 
1115  | 
        bzr diff -r1..2
 | 
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1116  | 
            Difference between revision 2 and revision 1
 | 
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1117  | 
        bzr diff --diff-prefix old/:new/
 | 
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1118  | 
            Same as 'bzr diff' but prefix paths with old/ and new/
 | 
| 
1694.2.4
by Martin Pool
 When a diff prefix is given, don't show it in === summary lines, only on the diffs themselves.  | 
1119  | 
        bzr diff bzr.mine bzr.dev
 | 
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1120  | 
            Show the differences between the two working trees
 | 
| 
1694.2.4
by Martin Pool
 When a diff prefix is given, don't show it in === summary lines, only on the diffs themselves.  | 
1121  | 
        bzr diff foo.c
 | 
| 
1850.1.1
by John Arbash Meinel
 Annotate the diff examples to explain what they do  | 
1122  | 
            Show just the differences for 'foo.c'
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1123  | 
    """
 | 
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1124  | 
    # TODO: Option to use external diff command; could be GNU diff, wdiff,
 | 
1125  | 
    #       or a graphical diff.
 | 
|
1126  | 
||
1127  | 
    # TODO: Python difflib is not exactly the same as unidiff; should
 | 
|
1128  | 
    #       either fix it up or prefer to use an external diff.
 | 
|
1129  | 
||
1130  | 
    # TODO: Selected-file diff is inefficient and doesn't show you
 | 
|
1131  | 
    #       deleted files.
 | 
|
1132  | 
||
1133  | 
    # TODO: This probably handles non-Unix newlines poorly.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1134  | 
|
1135  | 
takes_args = ['file*']  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1136  | 
takes_options = ['revision', 'diff-options', 'prefix']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1137  | 
aliases = ['di', 'dif']  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
1138  | 
encoding_type = 'exact'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1139  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1140  | 
    @display_command
 | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1141  | 
def run(self, revision=None, file_list=None, diff_options=None,  | 
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1142  | 
prefix=None):  | 
| 
1551.2.15
by Aaron Bentley
 Rename cmd_show_diff to diff_cmd_helper  | 
1143  | 
from bzrlib.diff import diff_cmd_helper, show_diff_trees  | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1144  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1145  | 
if (prefix is None) or (prefix == '0'):  | 
1146  | 
            # diff -p0 format
 | 
|
| 
1694.2.1
by Martin Pool
 Remove 'a/', 'b/' default prefixes on diff output.  | 
1147  | 
old_label = ''  | 
1148  | 
new_label = ''  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1149  | 
elif prefix == '1':  | 
1150  | 
old_label = 'old/'  | 
|
1151  | 
new_label = 'new/'  | 
|
1152  | 
else:  | 
|
1153  | 
if not ':' in prefix:  | 
|
1154  | 
raise BzrError("--diff-prefix expects two values separated by a colon")  | 
|
1155  | 
old_label, new_label = prefix.split(":")  | 
|
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1156  | 
|
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
1157  | 
try:  | 
| 
1551.2.13
by Aaron Bentley
 Got diff working properly with checkouts  | 
1158  | 
tree1, file_list = internal_tree_files(file_list)  | 
1159  | 
tree2 = None  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
1160  | 
b = None  | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
1161  | 
b2 = None  | 
| 
1185.35.32
by Aaron Bentley
 Fixed handling of files in mixed branches  | 
1162  | 
except FileInWrongBranch:  | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
1163  | 
if len(file_list) != 2:  | 
1164  | 
raise BzrCommandError("Files are in different branches")  | 
|
1165  | 
||
| 
1551.2.13
by Aaron Bentley
 Got diff working properly with checkouts  | 
1166  | 
tree1, file1 = WorkingTree.open_containing(file_list[0])  | 
1167  | 
tree2, file2 = WorkingTree.open_containing(file_list[1])  | 
|
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
1168  | 
if file1 != "" or file2 != "":  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
1169  | 
                # FIXME diff those two files. rbc 20051123
 | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
1170  | 
raise BzrCommandError("Files are in different branches")  | 
1171  | 
file_list = None  | 
|
| 
1732.3.1
by Matthieu Moy
 Implementation of -r revno:N:/path/to/branch  | 
1172  | 
except NotBranchError:  | 
| 
1881.1.2
by Matthieu Moy
 Formatting and style for the last patch.  | 
1173  | 
if (revision is not None and len(revision) == 2  | 
| 
1881.1.4
by Matthieu Moy
 needs_tree -> needs_branch  | 
1174  | 
and not revision[0].needs_branch()  | 
1175  | 
and not revision[1].needs_branch()):  | 
|
| 
1711.2.100
by John Arbash Meinel
 clean up comment.  | 
1176  | 
                # If both revision specs include a branch, we can
 | 
1177  | 
                # diff them without needing a local working tree
 | 
|
| 
1881.1.2
by Matthieu Moy
 Formatting and style for the last patch.  | 
1178  | 
tree1, tree2 = None, None  | 
| 
1881.1.1
by Matthieu Moy
 Fixed and tested "bzr diff" outside a working tree.  | 
1179  | 
else:  | 
1180  | 
                raise
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1181  | 
if revision is not None:  | 
| 
1551.2.13
by Aaron Bentley
 Got diff working properly with checkouts  | 
1182  | 
if tree2 is not None:  | 
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
1183  | 
raise BzrCommandError("Can't specify -r with two branches")  | 
| 
1185.50.44
by John Arbash Meinel
 [patch] Robey Pointer: diff -r 1.. should diff against working tree.  | 
1184  | 
if (len(revision) == 1) or (revision[1].spec is None):  | 
| 
1551.2.15
by Aaron Bentley
 Rename cmd_show_diff to diff_cmd_helper  | 
1185  | 
return diff_cmd_helper(tree1, file_list, diff_options,  | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1186  | 
revision[0],  | 
1187  | 
old_label=old_label, new_label=new_label)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1188  | 
elif len(revision) == 2:  | 
| 
1551.2.15
by Aaron Bentley
 Rename cmd_show_diff to diff_cmd_helper  | 
1189  | 
return diff_cmd_helper(tree1, file_list, diff_options,  | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1190  | 
revision[0], revision[1],  | 
1191  | 
old_label=old_label, new_label=new_label)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1192  | 
else:  | 
1193  | 
raise BzrCommandError('bzr diff --revision takes exactly one or two revision identifiers')  | 
|
1194  | 
else:  | 
|
| 
1551.2.13
by Aaron Bentley
 Got diff working properly with checkouts  | 
1195  | 
if tree2 is not None:  | 
1196  | 
return show_diff_trees(tree1, tree2, sys.stdout,  | 
|
1197  | 
specific_files=file_list,  | 
|
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1198  | 
external_diff_options=diff_options,  | 
1199  | 
old_label=old_label, new_label=new_label)  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
1200  | 
else:  | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1201  | 
return diff_cmd_helper(tree1, file_list, diff_options,  | 
1202  | 
old_label=old_label, new_label=new_label)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1203  | 
|
1204  | 
||
1205  | 
class cmd_deleted(Command):  | 
|
1206  | 
"""List files deleted in the working tree.  | 
|
1207  | 
    """
 | 
|
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1208  | 
    # TODO: Show files deleted since a previous revision, or
 | 
1209  | 
    # between two revisions.
 | 
|
1210  | 
    # TODO: Much more efficient way to do this: read in new
 | 
|
1211  | 
    # directories with readdir, rather than stating each one.  Same
 | 
|
1212  | 
    # level of effort but possibly much less IO.  (Or possibly not,
 | 
|
1213  | 
    # if the directories are very large...)
 | 
|
| 
1185.85.49
by John Arbash Meinel
 Updated cmd_deleted, including adding --show-ids option.  | 
1214  | 
takes_options = ['show-ids']  | 
1215  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1216  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1217  | 
def run(self, show_ids=False):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1218  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
1219  | 
old = tree.basis_tree()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1220  | 
for path, ie in old.inventory.iter_entries():  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1221  | 
if not tree.has_id(ie.file_id):  | 
| 
1185.85.49
by John Arbash Meinel
 Updated cmd_deleted, including adding --show-ids option.  | 
1222  | 
self.outf.write(path)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1223  | 
if show_ids:  | 
| 
1185.85.49
by John Arbash Meinel
 Updated cmd_deleted, including adding --show-ids option.  | 
1224  | 
self.outf.write(' ')  | 
1225  | 
self.outf.write(ie.file_id)  | 
|
1226  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1227  | 
|
1228  | 
||
1229  | 
class cmd_modified(Command):  | 
|
1230  | 
"""List files modified in working tree."""  | 
|
1231  | 
hidden = True  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1232  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1233  | 
def run(self):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1234  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
1852.10.3
by Robert Collins
 Remove all uses of compare_trees and replace with Tree.changes_from throughout bzrlib.  | 
1235  | 
td = tree.changes_from(tree.basis_tree())  | 
| 
1398
by Robert Collins
 integrate in Gustavos x-bit patch  | 
1236  | 
for path, id, kind, text_modified, meta_modified in td.modified:  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1237  | 
self.outf.write(path + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1238  | 
|
1239  | 
||
1240  | 
class cmd_added(Command):  | 
|
1241  | 
"""List files added in working tree."""  | 
|
1242  | 
hidden = True  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1243  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1244  | 
def run(self):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1245  | 
wt = WorkingTree.open_containing(u'.')[0]  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
1246  | 
basis_inv = wt.basis_tree().inventory  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1247  | 
inv = wt.inventory  | 
1248  | 
for file_id in inv:  | 
|
1249  | 
if file_id in basis_inv:  | 
|
1250  | 
                continue
 | 
|
1251  | 
path = inv.id2path(file_id)  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1252  | 
if not os.access(osutils.abspath(path), os.F_OK):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1253  | 
                continue
 | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1254  | 
self.outf.write(path + '\n')  | 
| 
1185.85.53
by John Arbash Meinel
 Updated cmd_root  | 
1255  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1256  | 
|
1257  | 
class cmd_root(Command):  | 
|
1258  | 
"""Show the tree root directory.  | 
|
1259  | 
||
1260  | 
    The root is the nearest enclosing directory with a .bzr control
 | 
|
1261  | 
    directory."""
 | 
|
1262  | 
takes_args = ['filename?']  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1263  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1264  | 
def run(self, filename=None):  | 
1265  | 
"""Print the branch root."""  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1266  | 
tree = WorkingTree.open_containing(filename)[0]  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1267  | 
self.outf.write(tree.basedir + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1268  | 
|
1269  | 
||
1270  | 
class cmd_log(Command):  | 
|
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1271  | 
"""Show log of a branch, file, or directory.  | 
1272  | 
||
1273  | 
    By default show the log of the branch containing the working directory.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1274  | 
|
| 
1185.16.153
by Martin Pool
 [patch] fix help for bzr log (Matthieu)  | 
1275  | 
    To request a range of logs, you can use the command -r begin..end
 | 
1276  | 
    -r revision requests a specific revision, -r ..end or -r begin.. are
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1277  | 
    also valid.
 | 
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1278  | 
|
1279  | 
    examples:
 | 
|
1280  | 
        bzr log
 | 
|
1281  | 
        bzr log foo.c
 | 
|
1282  | 
        bzr log -r -10.. http://server/branch
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1283  | 
    """
 | 
1284  | 
||
| 
1393.1.55
by Martin Pool
 doc  | 
1285  | 
    # TODO: Make --revision support uuid: and hash: [future tag:] notation.
 | 
1286  | 
||
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1287  | 
takes_args = ['location?']  | 
| 
1185.16.46
by mbp at sourcefrog
 - add help strings to some options  | 
1288  | 
takes_options = [Option('forward',  | 
1289  | 
help='show from oldest to newest'),  | 
|
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1290  | 
'timezone',  | 
1291  | 
Option('verbose',  | 
|
1292  | 
help='show files changed in each revision'),  | 
|
| 
1185.16.46
by mbp at sourcefrog
 - add help strings to some options  | 
1293  | 
'show-ids', 'revision',  | 
| 
1553.2.1
by Erik Bågfors
 Support for plugins to register log formatters and set default formatter  | 
1294  | 
'log-format',  | 
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
1295  | 
'line', 'long',  | 
| 
1185.16.46
by mbp at sourcefrog
 - add help strings to some options  | 
1296  | 
Option('message',  | 
| 
1185.16.48
by mbp at sourcefrog
 - more refactoring of and tests for option parsing  | 
1297  | 
help='show revisions whose message matches this regexp',  | 
1298  | 
type=str),  | 
|
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
1299  | 
'short',  | 
| 
1185.16.57
by Martin Pool
 [merge] from aaron  | 
1300  | 
                     ]
 | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
1301  | 
encoding_type = 'replace'  | 
1302  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1303  | 
    @display_command
 | 
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1304  | 
def run(self, location=None, timezone='original',  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1305  | 
verbose=False,  | 
1306  | 
show_ids=False,  | 
|
1307  | 
forward=False,  | 
|
1308  | 
revision=None,  | 
|
| 
1553.2.1
by Erik Bågfors
 Support for plugins to register log formatters and set default formatter  | 
1309  | 
log_format=None,  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1310  | 
message=None,  | 
1311  | 
long=False,  | 
|
| 
1185.12.25
by Aaron Bentley
 Added one-line log format  | 
1312  | 
short=False,  | 
1313  | 
line=False):  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1314  | 
from bzrlib.log import log_formatter, show_log  | 
| 
1185.16.49
by mbp at sourcefrog
 - more refactoring and tests of commandline  | 
1315  | 
assert message is None or isinstance(message, basestring), \  | 
| 
1185.16.48
by mbp at sourcefrog
 - more refactoring of and tests for option parsing  | 
1316  | 
"invalid message argument %r" % message  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1317  | 
direction = (forward and 'forward') or 'reverse'  | 
1318  | 
||
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
1319  | 
        # log everything
 | 
1320  | 
file_id = None  | 
|
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1321  | 
if location:  | 
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
1322  | 
            # find the file id to log:
 | 
1323  | 
||
| 
1626.1.2
by Martin Pool
 Better help message for log command.  | 
1324  | 
dir, fp = bzrdir.BzrDir.open_containing(location)  | 
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
1325  | 
b = dir.open_branch()  | 
| 
1442.1.64
by Robert Collins
 Branch.open_containing now returns a tuple (Branch, relative-path).  | 
1326  | 
if fp != '':  | 
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
1327  | 
try:  | 
1328  | 
                    # might be a tree:
 | 
|
1329  | 
inv = dir.open_workingtree().inventory  | 
|
1330  | 
except (errors.NotBranchError, errors.NotLocalUrl):  | 
|
1331  | 
                    # either no tree, or is remote.
 | 
|
1332  | 
inv = b.basis_tree().inventory  | 
|
| 
1497
by Robert Collins
 Move Branch.read_working_inventory to WorkingTree.  | 
1333  | 
file_id = inv.path2id(fp)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1334  | 
else:  | 
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
1335  | 
            # local dir only
 | 
1336  | 
            # FIXME ? log the current subdir only RBC 20060203 
 | 
|
| 
1534.4.50
by Robert Collins
 Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.  | 
1337  | 
dir, relpath = bzrdir.BzrDir.open_containing('.')  | 
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
1338  | 
b = dir.open_branch()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1339  | 
|
1340  | 
if revision is None:  | 
|
1341  | 
rev1 = None  | 
|
1342  | 
rev2 = None  | 
|
1343  | 
elif len(revision) == 1:  | 
|
| 
1185.11.5
by John Arbash Meinel
 Merged up-to-date against mainline, still broken.  | 
1344  | 
rev1 = rev2 = revision[0].in_history(b).revno  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1345  | 
elif len(revision) == 2:  | 
| 
1553.4.2
by Michael Ellerman
 Make bzr log -r .. work, fixes bug #4609. Add a bunch of tests to make sure  | 
1346  | 
if revision[0].spec is None:  | 
1347  | 
                # missing begin-range means first revision
 | 
|
1348  | 
rev1 = 1  | 
|
1349  | 
else:  | 
|
1350  | 
rev1 = revision[0].in_history(b).revno  | 
|
1351  | 
||
| 
1540.2.6
by Robey Pointer
 make 'log' and 'status' treat '-r N..' as implicitly '-r N..-1'  | 
1352  | 
if revision[1].spec is None:  | 
1353  | 
                # missing end-range means last known revision
 | 
|
1354  | 
rev2 = b.revno()  | 
|
1355  | 
else:  | 
|
1356  | 
rev2 = revision[1].in_history(b).revno  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1357  | 
else:  | 
1358  | 
raise BzrCommandError('bzr log --revision takes one or two values.')  | 
|
1359  | 
||
| 
1185.36.1
by Daniel Silverstone
 A revision of zero is meant to be zero, not None. Also order the revisions supplied to cope with the user being confused  | 
1360  | 
        # By this point, the revision numbers are converted to the +ve
 | 
1361  | 
        # form if they were supplied in the -ve form, so we can do
 | 
|
1362  | 
        # this comparison in relative safety
 | 
|
1363  | 
if rev1 > rev2:  | 
|
1364  | 
(rev2, rev1) = (rev1, rev2)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1365  | 
|
| 
1553.2.1
by Erik Bågfors
 Support for plugins to register log formatters and set default formatter  | 
1366  | 
if (log_format == None):  | 
| 
1770.2.9
by Aaron Bentley
 Add Branch.get_config, update BranchConfig() callers  | 
1367  | 
default = b.get_config().log_format()  | 
1368  | 
log_format = get_log_format(long=long, short=short, line=line,  | 
|
1369  | 
default=default)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1370  | 
lf = log_formatter(log_format,  | 
1371  | 
show_ids=show_ids,  | 
|
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
1372  | 
to_file=self.outf,  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1373  | 
show_timezone=timezone)  | 
1374  | 
||
1375  | 
show_log(b,  | 
|
1376  | 
lf,  | 
|
1377  | 
file_id,  | 
|
1378  | 
verbose=verbose,  | 
|
1379  | 
direction=direction,  | 
|
1380  | 
start_revision=rev1,  | 
|
1381  | 
end_revision=rev2,  | 
|
1382  | 
search=message)  | 
|
1383  | 
||
| 
1185.85.4
by John Arbash Meinel
 currently broken, trying to fix things up.  | 
1384  | 
|
| 
1553.2.4
by Erik Bågfors
 Support for setting the default log format at a configuration option  | 
1385  | 
def get_log_format(long=False, short=False, line=False, default='long'):  | 
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
1386  | 
log_format = default  | 
1387  | 
if long:  | 
|
1388  | 
log_format = 'long'  | 
|
1389  | 
if short:  | 
|
1390  | 
log_format = 'short'  | 
|
1391  | 
if line:  | 
|
1392  | 
log_format = 'line'  | 
|
1393  | 
return log_format  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1394  | 
|
1395  | 
||
1396  | 
class cmd_touching_revisions(Command):  | 
|
1397  | 
"""Return revision-ids which affected a particular file.  | 
|
1398  | 
||
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1399  | 
    A more user-friendly interface is "bzr log FILE".
 | 
1400  | 
    """
 | 
|
1401  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1402  | 
hidden = True  | 
1403  | 
takes_args = ["filename"]  | 
|
| 
1185.85.55
by John Arbash Meinel
 Updated cmd_touching_revisions  | 
1404  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1405  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1406  | 
def run(self, filename):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1407  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
1408  | 
b = tree.branch  | 
|
1409  | 
inv = tree.read_working_inventory()  | 
|
| 
1442.1.64
by Robert Collins
 Branch.open_containing now returns a tuple (Branch, relative-path).  | 
1410  | 
file_id = inv.path2id(relpath)  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1411  | 
for revno, revision_id, what in log.find_touching_revisions(b, file_id):  | 
| 
1185.85.55
by John Arbash Meinel
 Updated cmd_touching_revisions  | 
1412  | 
self.outf.write("%6d %s\n" % (revno, what))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1413  | 
|
1414  | 
||
1415  | 
class cmd_ls(Command):  | 
|
1416  | 
"""List files in a tree.  | 
|
1417  | 
    """
 | 
|
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1418  | 
    # TODO: Take a revision or remote path and list that tree instead.
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1419  | 
hidden = True  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1420  | 
takes_options = ['verbose', 'revision',  | 
1421  | 
Option('non-recursive',  | 
|
1422  | 
help='don\'t recurse into sub-directories'),  | 
|
1423  | 
Option('from-root',  | 
|
1424  | 
help='Print all paths from the root of the branch.'),  | 
|
1425  | 
Option('unknown', help='Print unknown files'),  | 
|
1426  | 
Option('versioned', help='Print versioned files'),  | 
|
1427  | 
Option('ignored', help='Print ignored files'),  | 
|
1428  | 
||
1429  | 
Option('null', help='Null separate the files'),  | 
|
1430  | 
                    ]
 | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1431  | 
    @display_command
 | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1432  | 
def run(self, revision=None, verbose=False,  | 
1433  | 
non_recursive=False, from_root=False,  | 
|
1434  | 
unknown=False, versioned=False, ignored=False,  | 
|
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
1435  | 
null=False):  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1436  | 
|
1437  | 
if verbose and null:  | 
|
1438  | 
raise BzrCommandError('Cannot set both --verbose and --null')  | 
|
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
1439  | 
all = not (unknown or versioned or ignored)  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1440  | 
|
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
1441  | 
selection = {'I':ignored, '?':unknown, 'V':versioned}  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1442  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1443  | 
tree, relpath = WorkingTree.open_containing(u'.')  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1444  | 
if from_root:  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1445  | 
relpath = u''  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1446  | 
elif relpath:  | 
1447  | 
relpath += '/'  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1448  | 
if revision is not None:  | 
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
1449  | 
tree = tree.branch.repository.revision_tree(  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1450  | 
revision[0].in_history(tree.branch).rev_id)  | 
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
1451  | 
|
1452  | 
for fp, fc, kind, fid, entry in tree.list_files():  | 
|
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1453  | 
if fp.startswith(relpath):  | 
1454  | 
fp = fp[len(relpath):]  | 
|
1455  | 
if non_recursive and '/' in fp:  | 
|
1456  | 
                    continue
 | 
|
1457  | 
if not all and not selection[fc]:  | 
|
1458  | 
                    continue
 | 
|
1459  | 
if verbose:  | 
|
1460  | 
kindch = entry.kind_character()  | 
|
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
1461  | 
self.outf.write('%-8s %s%s\n' % (fc, fp, kindch))  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1462  | 
elif null:  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1463  | 
self.outf.write(fp + '\0')  | 
| 
1185.85.22
by John Arbash Meinel
 Updated cmd_inventory. Changing from having each Command request an encoded stdout to providing one before calling run()  | 
1464  | 
self.outf.flush()  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
1465  | 
else:  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1466  | 
self.outf.write(fp + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1467  | 
|
1468  | 
||
1469  | 
class cmd_unknowns(Command):  | 
|
1470  | 
"""List unknown files."""  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1471  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1472  | 
def run(self):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1473  | 
for f in WorkingTree.open_containing(u'.')[0].unknowns():  | 
| 
1773.4.2
by Martin Pool
 Cleanup of imports; undeprecate all_revision_ids()  | 
1474  | 
self.outf.write(osutils.quotefn(f) + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1475  | 
|
1476  | 
||
1477  | 
class cmd_ignore(Command):  | 
|
1478  | 
"""Ignore a command or pattern.  | 
|
1479  | 
||
1480  | 
    To remove patterns from the ignore list, edit the .bzrignore file.
 | 
|
1481  | 
||
1482  | 
    If the pattern contains a slash, it is compared to the whole path
 | 
|
| 
1185.16.4
by Martin Pool
 - doc and todo for ignore command  | 
1483  | 
    from the branch root.  Otherwise, it is compared to only the last
 | 
1484  | 
    component of the path.  To match a file only in the root directory,
 | 
|
1485  | 
    prepend './'.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1486  | 
|
1487  | 
    Ignore patterns are case-insensitive on case-insensitive systems.
 | 
|
1488  | 
||
1489  | 
    Note: wildcards must be quoted from the shell on Unix.
 | 
|
1490  | 
||
1491  | 
    examples:
 | 
|
1492  | 
        bzr ignore ./Makefile
 | 
|
1493  | 
        bzr ignore '*.class'
 | 
|
1494  | 
    """
 | 
|
| 
1185.16.4
by Martin Pool
 - doc and todo for ignore command  | 
1495  | 
    # TODO: Complain if the filename is absolute
 | 
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
1496  | 
takes_args = ['name_pattern?']  | 
1497  | 
takes_options = [  | 
|
1498  | 
Option('old-default-rules',  | 
|
1499  | 
help='Out the ignore rules bzr < 0.9 always used.')  | 
|
1500  | 
                     ]
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1501  | 
|
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
1502  | 
def run(self, name_pattern=None, old_default_rules=None):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1503  | 
from bzrlib.atomicfile import AtomicFile  | 
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
1504  | 
if old_default_rules is not None:  | 
1505  | 
            # dump the rules and exit
 | 
|
| 
1836.1.12
by John Arbash Meinel
 Move ignores into a file of their own, make DEFAULT_IGNORE a deprecated list. Create deprecated_list in symbol versioning.  | 
1506  | 
for pattern in ignores.OLD_DEFAULTS:  | 
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
1507  | 
print pattern  | 
1508  | 
            return
 | 
|
1509  | 
if name_pattern is None:  | 
|
1510  | 
raise BzrCommandError("ignore requires a NAME_PATTERN")  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1511  | 
tree, relpath = WorkingTree.open_containing(u'.')  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1512  | 
ifn = tree.abspath('.bzrignore')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1513  | 
if os.path.exists(ifn):  | 
1514  | 
f = open(ifn, 'rt')  | 
|
1515  | 
try:  | 
|
1516  | 
igns = f.read().decode('utf-8')  | 
|
1517  | 
finally:  | 
|
1518  | 
f.close()  | 
|
1519  | 
else:  | 
|
1520  | 
igns = ''  | 
|
1521  | 
||
1522  | 
        # TODO: If the file already uses crlf-style termination, maybe
 | 
|
1523  | 
        # we should use that for the newly added lines?
 | 
|
1524  | 
||
1525  | 
if igns and igns[-1] != '\n':  | 
|
1526  | 
igns += '\n'  | 
|
1527  | 
igns += name_pattern + '\n'  | 
|
1528  | 
||
| 
1704.2.22
by Martin Pool
 Fix misplaced try/finally (Debian #352791, madduck)  | 
1529  | 
f = AtomicFile(ifn, 'wt')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1530  | 
try:  | 
1531  | 
f.write(igns.encode('utf-8'))  | 
|
1532  | 
f.commit()  | 
|
1533  | 
finally:  | 
|
1534  | 
f.close()  | 
|
1535  | 
||
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1536  | 
inv = tree.inventory  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1537  | 
if inv.path2id('.bzrignore'):  | 
1538  | 
mutter('.bzrignore is already versioned')  | 
|
1539  | 
else:  | 
|
1540  | 
mutter('need to make new .bzrignore file versioned')  | 
|
| 
1508.1.5
by Robert Collins
 Move add from Branch to WorkingTree.  | 
1541  | 
tree.add(['.bzrignore'])  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1542  | 
|
1543  | 
||
1544  | 
class cmd_ignored(Command):  | 
|
1545  | 
"""List ignored files and the patterns that matched them.  | 
|
1546  | 
||
1547  | 
    See also: bzr ignore"""
 | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1548  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1549  | 
def run(self):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1550  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
1399.1.2
by Robert Collins
 push kind character creation into InventoryEntry and TreeEntry  | 
1551  | 
for path, file_class, kind, file_id, entry in tree.list_files():  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1552  | 
if file_class != 'I':  | 
1553  | 
                continue
 | 
|
1554  | 
            ## XXX: Slightly inefficient since this was already calculated
 | 
|
1555  | 
pat = tree.is_ignored(path)  | 
|
1556  | 
print '%-50s %s' % (path, pat)  | 
|
1557  | 
||
1558  | 
||
1559  | 
class cmd_lookup_revision(Command):  | 
|
1560  | 
"""Lookup the revision-id from a revision-number  | 
|
1561  | 
||
1562  | 
    example:
 | 
|
1563  | 
        bzr lookup-revision 33
 | 
|
1564  | 
    """
 | 
|
1565  | 
hidden = True  | 
|
1566  | 
takes_args = ['revno']  | 
|
1567  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1568  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1569  | 
def run(self, revno):  | 
1570  | 
try:  | 
|
1571  | 
revno = int(revno)  | 
|
1572  | 
except ValueError:  | 
|
1573  | 
raise BzrCommandError("not a valid revision-number: %r" % revno)  | 
|
1574  | 
||
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1575  | 
print WorkingTree.open_containing(u'.')[0].branch.get_rev_id(revno)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1576  | 
|
1577  | 
||
1578  | 
class cmd_export(Command):  | 
|
1579  | 
"""Export past revision to destination directory.  | 
|
1580  | 
||
1581  | 
    If no revision is specified this exports the last committed revision.
 | 
|
1582  | 
||
1583  | 
    Format may be an "exporter" name, such as tar, tgz, tbz2.  If none is
 | 
|
1584  | 
    given, try to find the format with the extension. If no extension
 | 
|
1585  | 
    is found exports to a directory (equivalent to --format=dir).
 | 
|
1586  | 
||
1587  | 
    Root may be the top directory for tar, tgz and tbz2 formats. If none
 | 
|
| 
1185.31.11
by John Arbash Meinel
 Merging Alexander's zip export patch  | 
1588  | 
    is given, the top directory will be the root name of the file.
 | 
1589  | 
||
1590  | 
    Note: export of tree with non-ascii filenames to zip is not supported.
 | 
|
1591  | 
||
| 
1551.3.11
by Aaron Bentley
 Merge from Robert  | 
1592  | 
     Supported formats       Autodetected by extension
 | 
1593  | 
     -----------------       -------------------------
 | 
|
| 
1185.31.11
by John Arbash Meinel
 Merging Alexander's zip export patch  | 
1594  | 
         dir                            -
 | 
1595  | 
         tar                          .tar
 | 
|
1596  | 
         tbz2                    .tar.bz2, .tbz2
 | 
|
1597  | 
         tgz                      .tar.gz, .tgz
 | 
|
1598  | 
         zip                          .zip
 | 
|
1599  | 
    """
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1600  | 
takes_args = ['dest']  | 
1601  | 
takes_options = ['revision', 'format', 'root']  | 
|
1602  | 
def run(self, dest, revision=None, format=None, root=None):  | 
|
| 
1185.31.12
by John Arbash Meinel
 Refactored the export code to make it easier to add new export formats.  | 
1603  | 
from bzrlib.export import export  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1604  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1605  | 
b = tree.branch  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1606  | 
if revision is None:  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1607  | 
            # should be tree.last_revision  FIXME
 | 
| 
1241
by Martin Pool
 - rename last_patch to last_revision  | 
1608  | 
rev_id = b.last_revision()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1609  | 
else:  | 
1610  | 
if len(revision) != 1:  | 
|
1611  | 
raise BzrError('bzr export --revision takes exactly 1 argument')  | 
|
| 
1185.11.5
by John Arbash Meinel
 Merged up-to-date against mainline, still broken.  | 
1612  | 
rev_id = revision[0].in_history(b).rev_id  | 
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
1613  | 
t = b.repository.revision_tree(rev_id)  | 
| 
1185.31.12
by John Arbash Meinel
 Refactored the export code to make it easier to add new export formats.  | 
1614  | 
try:  | 
1615  | 
export(t, dest, format, root)  | 
|
1616  | 
except errors.NoSuchExportFormat, e:  | 
|
1617  | 
raise BzrCommandError('Unsupported export format: %s' % e.format)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1618  | 
|
1619  | 
||
1620  | 
class cmd_cat(Command):  | 
|
1621  | 
"""Write a file's text from a previous revision."""  | 
|
1622  | 
||
1623  | 
takes_options = ['revision']  | 
|
1624  | 
takes_args = ['filename']  | 
|
1625  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1626  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1627  | 
def run(self, filename, revision=None):  | 
| 
1185.50.9
by John Arbash Meinel
 [bug 3632] Matthieu Moy- bzr cat should default to last revision  | 
1628  | 
if revision is not None and len(revision) != 1:  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1629  | 
raise BzrCommandError("bzr cat --revision takes exactly one number")  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1630  | 
tree = None  | 
1631  | 
try:  | 
|
1632  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
|
1633  | 
b = tree.branch  | 
|
1634  | 
except NotBranchError:  | 
|
1635  | 
            pass
 | 
|
| 
1185.50.9
by John Arbash Meinel
 [bug 3632] Matthieu Moy- bzr cat should default to last revision  | 
1636  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1637  | 
if tree is None:  | 
1638  | 
b, relpath = Branch.open_containing(filename)  | 
|
| 
1185.50.9
by John Arbash Meinel
 [bug 3632] Matthieu Moy- bzr cat should default to last revision  | 
1639  | 
if revision is None:  | 
1640  | 
revision_id = b.last_revision()  | 
|
1641  | 
else:  | 
|
1642  | 
revision_id = revision[0].in_history(b).rev_id  | 
|
1643  | 
b.print_file(relpath, revision_id)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1644  | 
|
1645  | 
||
1646  | 
class cmd_local_time_offset(Command):  | 
|
1647  | 
"""Show the offset in seconds from GMT to local time."""  | 
|
1648  | 
hidden = True  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1649  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1650  | 
def run(self):  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1651  | 
print osutils.local_time_offset()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1652  | 
|
1653  | 
||
1654  | 
||
1655  | 
class cmd_commit(Command):  | 
|
1656  | 
"""Commit changes into a new revision.  | 
|
1657  | 
    
 | 
|
1658  | 
    If no arguments are given, the entire tree is committed.
 | 
|
1659  | 
||
1660  | 
    If selected files are specified, only changes to those files are
 | 
|
1661  | 
    committed.  If a directory is specified then the directory and everything 
 | 
|
1662  | 
    within it is committed.
 | 
|
1663  | 
||
1664  | 
    A selected-file commit may fail in some cases where the committed
 | 
|
1665  | 
    tree would be invalid, such as trying to commit a file in a
 | 
|
1666  | 
    newly-added directory that is not itself committed.
 | 
|
1667  | 
    """
 | 
|
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1668  | 
    # TODO: Run hooks on tree to-be-committed, and after commit.
 | 
1669  | 
||
| 
1185.16.65
by mbp at sourcefrog
 - new commit --strict option  | 
1670  | 
    # TODO: Strict commit that fails if there are deleted files.
 | 
1671  | 
    #       (what does "deleted files" mean ??)
 | 
|
1672  | 
||
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1673  | 
    # TODO: Give better message for -s, --summary, used by tla people
 | 
1674  | 
||
1675  | 
    # XXX: verbose currently does nothing
 | 
|
1676  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1677  | 
takes_args = ['selected*']  | 
| 
1185.16.48
by mbp at sourcefrog
 - more refactoring of and tests for option parsing  | 
1678  | 
takes_options = ['message', 'verbose',  | 
1679  | 
Option('unchanged',  | 
|
1680  | 
help='commit even if nothing has changed'),  | 
|
1681  | 
Option('file', type=str,  | 
|
1682  | 
argname='msgfile',  | 
|
1683  | 
help='file containing commit message'),  | 
|
| 
1185.16.65
by mbp at sourcefrog
 - new commit --strict option  | 
1684  | 
Option('strict',  | 
1685  | 
help="refuse to commit if there are unknown "  | 
|
1686  | 
"files in the working tree."),  | 
|
| 
1587.1.8
by Robert Collins
 Local commits on unbound branches fail.  | 
1687  | 
Option('local',  | 
1688  | 
help="perform a local only commit in a bound "  | 
|
1689  | 
                                 "branch. Such commits are not pushed to "
 | 
|
1690  | 
                                 "the master branch until a normal commit "
 | 
|
1691  | 
                                 "is performed."
 | 
|
1692  | 
                            ),
 | 
|
| 
1185.16.43
by Martin Pool
 - clean up handling of option objects  | 
1693  | 
                     ]
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1694  | 
aliases = ['ci', 'checkin']  | 
1695  | 
||
1696  | 
def run(self, message=None, file=None, verbose=True, selected_list=None,  | 
|
| 
1587.1.8
by Robert Collins
 Local commits on unbound branches fail.  | 
1697  | 
unchanged=False, strict=False, local=False):  | 
| 
1607.1.5
by Robert Collins
 Make commit verbose mode work!.  | 
1698  | 
from bzrlib.commit import (NullCommitReporter, ReportCommitToLog)  | 
| 
1185.16.65
by mbp at sourcefrog
 - new commit --strict option  | 
1699  | 
from bzrlib.errors import (PointlessCommit, ConflictsInTree,  | 
1700  | 
StrictCommitFailed)  | 
|
| 
1185.33.76
by Martin Pool
 Fix import error.  | 
1701  | 
from bzrlib.msgeditor import edit_commit_message, \  | 
1702  | 
                make_commit_message_template
 | 
|
| 
1185.33.72
by Martin Pool
 Fix commit message template for non-ascii files, and add test for handling of  | 
1703  | 
from tempfile import TemporaryFile  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1704  | 
|
| 
1185.33.77
by Martin Pool
 doc  | 
1705  | 
        # TODO: Need a blackbox test for invoking the external editor; may be
 | 
1706  | 
        # slightly problematic to run this cross-platform.
 | 
|
1707  | 
||
| 
1185.33.72
by Martin Pool
 Fix commit message template for non-ascii files, and add test for handling of  | 
1708  | 
        # TODO: do more checks that the commit will succeed before 
 | 
1709  | 
        # spending the user's valuable time typing a commit message.
 | 
|
1710  | 
        #
 | 
|
1711  | 
        # TODO: if the commit *does* happen to fail, then save the commit 
 | 
|
1712  | 
        # message to a temporary file where it can be recovered
 | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1713  | 
tree, selected_list = tree_files(selected_list)  | 
| 
1704.2.11
by Martin Pool
 Handle 'bzr commit DIR' when dir contains pending merges.  | 
1714  | 
if selected_list == ['']:  | 
1715  | 
            # workaround - commit of root of tree should be exactly the same
 | 
|
1716  | 
            # as just default commit in that tree, and succeed even though
 | 
|
1717  | 
            # selected-file merge commit is not done yet
 | 
|
1718  | 
selected_list = []  | 
|
1719  | 
||
| 
1587.1.8
by Robert Collins
 Local commits on unbound branches fail.  | 
1720  | 
if local and not tree.branch.get_bound_location():  | 
1721  | 
raise errors.LocalRequiresBoundBranch()  | 
|
| 
1414
by Robert Collins
 merge in an adjusted version of Jelmer's empty-log detection patch.  | 
1722  | 
if message is None and not file:  | 
| 
1185.33.76
by Martin Pool
 Fix import error.  | 
1723  | 
template = make_commit_message_template(tree, selected_list)  | 
| 
1185.33.72
by Martin Pool
 Fix commit message template for non-ascii files, and add test for handling of  | 
1724  | 
message = edit_commit_message(template)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1725  | 
if message is None:  | 
| 
1169
by Martin Pool
 - clean up nasty code for inserting the status summary into commit template  | 
1726  | 
raise BzrCommandError("please specify a commit message"  | 
1727  | 
" with either --message or --file")  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1728  | 
elif message and file:  | 
1729  | 
raise BzrCommandError("please specify either --message or --file")  | 
|
1730  | 
||
1731  | 
if file:  | 
|
| 
1773.4.2
by Martin Pool
 Cleanup of imports; undeprecate all_revision_ids()  | 
1732  | 
message = codecs.open(file, 'rt', bzrlib.user_encoding).read()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1733  | 
|
| 
1414
by Robert Collins
 merge in an adjusted version of Jelmer's empty-log detection patch.  | 
1734  | 
if message == "":  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1735  | 
raise BzrCommandError("empty commit message specified")  | 
| 
1607.1.5
by Robert Collins
 Make commit verbose mode work!.  | 
1736  | 
|
1737  | 
if verbose:  | 
|
1738  | 
reporter = ReportCommitToLog()  | 
|
1739  | 
else:  | 
|
1740  | 
reporter = NullCommitReporter()  | 
|
1741  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1742  | 
try:  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1743  | 
tree.commit(message, specific_files=selected_list,  | 
| 
1607.1.5
by Robert Collins
 Make commit verbose mode work!.  | 
1744  | 
allow_pointless=unchanged, strict=strict, local=local,  | 
1745  | 
reporter=reporter)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1746  | 
except PointlessCommit:  | 
1747  | 
            # FIXME: This should really happen before the file is read in;
 | 
|
1748  | 
            # perhaps prepare the commit; get the message; then actually commit
 | 
|
| 
1711.2.60
by John Arbash Meinel
 Fix an empty commit to raise the right exception.  | 
1749  | 
raise BzrCommandError("no changes to commit."  | 
1750  | 
" use --unchanged to commit anyhow")  | 
|
| 
1185.14.10
by Aaron Bentley
 Commit aborts with conflicts in the tree.  | 
1751  | 
except ConflictsInTree:  | 
1752  | 
raise BzrCommandError("Conflicts detected in working tree. "  | 
|
1753  | 
'Use "bzr conflicts" to list, "bzr resolve FILE" to resolve.')  | 
|
| 
1185.16.65
by mbp at sourcefrog
 - new commit --strict option  | 
1754  | 
except StrictCommitFailed:  | 
1755  | 
raise BzrCommandError("Commit refused because there are unknown "  | 
|
1756  | 
"files in the working tree.")  | 
|
| 
1505.1.24
by John Arbash Meinel
 Updated commit to handle bound branches. Included test to handle commit after merge  | 
1757  | 
except errors.BoundBranchOutOfDate, e:  | 
1758  | 
raise BzrCommandError(str(e)  | 
|
| 
1587.1.12
by Robert Collins
 Update help message to be more bound branch friendly.  | 
1759  | 
+ ' Either unbind, update, or'  | 
1760  | 
' pass --local to commit.')  | 
|
| 
1185.49.17
by John Arbash Meinel
 [merge] Robey Pointer - some sftp fixes, and an http patch  | 
1761  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1762  | 
|
1763  | 
class cmd_check(Command):  | 
|
1764  | 
"""Validate consistency of branch history.  | 
|
1765  | 
||
1766  | 
    This command checks various invariants about the branch storage to
 | 
|
1767  | 
    detect data corruption or bzr bugs.
 | 
|
1768  | 
    """
 | 
|
| 
1512
by Robert Collins
 Merge from Martin. Adjust check to work with HTTP again.  | 
1769  | 
takes_args = ['branch?']  | 
| 
1449
by Robert Collins
 teach check about ghosts  | 
1770  | 
takes_options = ['verbose']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1771  | 
|
| 
1512
by Robert Collins
 Merge from Martin. Adjust check to work with HTTP again.  | 
1772  | 
def run(self, branch=None, verbose=False):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1773  | 
from bzrlib.check import check  | 
| 
1512
by Robert Collins
 Merge from Martin. Adjust check to work with HTTP again.  | 
1774  | 
if branch is None:  | 
1775  | 
tree = WorkingTree.open_containing()[0]  | 
|
1776  | 
branch = tree.branch  | 
|
1777  | 
else:  | 
|
1778  | 
branch = Branch.open(branch)  | 
|
1779  | 
check(branch, verbose)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1780  | 
|
1781  | 
||
1782  | 
class cmd_scan_cache(Command):  | 
|
1783  | 
hidden = True  | 
|
1784  | 
def run(self):  | 
|
1785  | 
from bzrlib.hashcache import HashCache  | 
|
1786  | 
||
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1787  | 
c = HashCache(u'.')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1788  | 
c.read()  | 
1789  | 
c.scan()  | 
|
1790  | 
||
1791  | 
print '%6d stats' % c.stat_count  | 
|
1792  | 
print '%6d in hashcache' % len(c._cache)  | 
|
1793  | 
print '%6d files removed from cache' % c.removed_count  | 
|
1794  | 
print '%6d hashes updated' % c.update_count  | 
|
1795  | 
print '%6d files changed too recently to cache' % c.danger_count  | 
|
1796  | 
||
1797  | 
if c.needs_write:  | 
|
1798  | 
c.write()  | 
|
| 
1534.5.16
by Robert Collins
 Review feedback.  | 
1799  | 
|
1800  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1801  | 
class cmd_upgrade(Command):  | 
1802  | 
"""Upgrade branch storage to current format.  | 
|
1803  | 
||
1804  | 
    The check command or bzr developers may sometimes advise you to run
 | 
|
| 
1534.4.13
by Robert Collins
 Give a reasonable warning on attempts to upgrade a readonly url.  | 
1805  | 
    this command. When the default format has changed you may also be warned
 | 
1806  | 
    during other operations to upgrade.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1807  | 
    """
 | 
| 
1534.4.13
by Robert Collins
 Give a reasonable warning on attempts to upgrade a readonly url.  | 
1808  | 
takes_args = ['url?']  | 
| 
1534.5.13
by Robert Collins
 Correct buggy test.  | 
1809  | 
takes_options = [  | 
1810  | 
Option('format',  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1811  | 
help='Upgrade to a specific format. Current formats'  | 
1812  | 
                                 ' are: default, knit, metaweave and weave.'
 | 
|
1813  | 
                                 ' Default is knit; metaweave and weave are'
 | 
|
1814  | 
' deprecated',  | 
|
| 
1534.5.13
by Robert Collins
 Correct buggy test.  | 
1815  | 
type=get_format_type),  | 
1816  | 
                    ]
 | 
|
1817  | 
||
1818  | 
||
1819  | 
def run(self, url='.', format=None):  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1820  | 
from bzrlib.upgrade import upgrade  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1821  | 
if format is None:  | 
1822  | 
format = get_format_type('default')  | 
|
| 
1534.5.13
by Robert Collins
 Correct buggy test.  | 
1823  | 
upgrade(url, format)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1824  | 
|
1825  | 
||
1826  | 
class cmd_whoami(Command):  | 
|
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
1827  | 
"""Show or set bzr user id.  | 
1828  | 
    
 | 
|
1829  | 
    examples:
 | 
|
1830  | 
        bzr whoami --email
 | 
|
1831  | 
        bzr whoami 'Frank Chu <fchu@example.com>'
 | 
|
1832  | 
    """
 | 
|
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
1833  | 
takes_options = [ Option('email',  | 
1834  | 
help='display email address only'),  | 
|
1835  | 
Option('branch',  | 
|
1836  | 
help='set identity for the current branch instead of '  | 
|
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
1837  | 
'globally'),  | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
1838  | 
                    ]
 | 
1839  | 
takes_args = ['name?']  | 
|
1840  | 
encoding_type = 'replace'  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1841  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1842  | 
    @display_command
 | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
1843  | 
def run(self, email=False, branch=False, name=None):  | 
1844  | 
if name is None:  | 
|
1845  | 
            # use branch if we're inside one; otherwise global config
 | 
|
1846  | 
try:  | 
|
| 
1816.2.10
by Robey Pointer
 code style changes  | 
1847  | 
c = Branch.open_containing('.')[0].get_config()  | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
1848  | 
except NotBranchError:  | 
1849  | 
c = config.GlobalConfig()  | 
|
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
1850  | 
if email:  | 
| 
1816.2.10
by Robey Pointer
 code style changes  | 
1851  | 
self.outf.write(c.user_email() + '\n')  | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
1852  | 
else:  | 
| 
1816.2.10
by Robey Pointer
 code style changes  | 
1853  | 
self.outf.write(c.username() + '\n')  | 
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
1854  | 
            return
 | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
1855  | 
|
| 
1840.1.2
by Robey Pointer
 instead of raising an error, just display an exception if 'whoami' is given a name that doesn't look like it contains an email address  | 
1856  | 
        # display a warning if an email address isn't included in the given name.
 | 
1857  | 
try:  | 
|
1858  | 
config.extract_email_address(name)  | 
|
1859  | 
except BzrError, e:  | 
|
| 
1840.1.5
by Robey Pointer
 change the warning message for a 'whoami' with no email address, on jam's recommendation  | 
1860  | 
warning('"%s" does not seem to contain an email address. '  | 
1861  | 
'This is allowed, but not recommended.', name)  | 
|
| 
1840.1.1
by Robey Pointer
 raise an exception if 'whoami' is given a name without a decodable email address  | 
1862  | 
|
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
1863  | 
        # use global config unless --branch given
 | 
1864  | 
if branch:  | 
|
| 
1816.2.10
by Robey Pointer
 code style changes  | 
1865  | 
c = Branch.open_containing('.')[0].get_config()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1866  | 
else:  | 
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
1867  | 
c = config.GlobalConfig()  | 
1868  | 
c.set_user_option('email', name)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1869  | 
|
| 
1534.4.25
by Robert Collins
 Add a --transport parameter to the test suite to set the default transport to be used in the test suite.  | 
1870  | 
|
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
1871  | 
class cmd_nick(Command):  | 
| 
1551.3.11
by Aaron Bentley
 Merge from Robert  | 
1872  | 
"""Print or set the branch nickname.  | 
1873  | 
||
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
1874  | 
    If unset, the tree root directory name is used as the nickname
 | 
1875  | 
    To print the current nickname, execute with no argument.  
 | 
|
1876  | 
    """
 | 
|
1877  | 
takes_args = ['nickname?']  | 
|
1878  | 
def run(self, nickname=None):  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1879  | 
branch = Branch.open_containing(u'.')[0]  | 
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
1880  | 
if nickname is None:  | 
1881  | 
self.printme(branch)  | 
|
1882  | 
else:  | 
|
1883  | 
branch.nick = nickname  | 
|
1884  | 
||
1885  | 
    @display_command
 | 
|
1886  | 
def printme(self, branch):  | 
|
1887  | 
print branch.nick  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1888  | 
|
| 
1534.4.25
by Robert Collins
 Add a --transport parameter to the test suite to set the default transport to be used in the test suite.  | 
1889  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1890  | 
class cmd_selftest(Command):  | 
| 
1393.1.46
by Martin Pool
 - bzr selftest arguments can be partial ids of tests to run  | 
1891  | 
"""Run internal test suite.  | 
1892  | 
    
 | 
|
1893  | 
    This creates temporary test directories in the working directory,
 | 
|
1894  | 
    but not existing data is affected.  These directories are deleted
 | 
|
1895  | 
    if the tests pass, or left behind to help in debugging if they
 | 
|
| 
1185.35.20
by Aaron Bentley
 Only keep test failure directories if --keep-output is specified  | 
1896  | 
    fail and --keep-output is specified.
 | 
| 
1393.1.46
by Martin Pool
 - bzr selftest arguments can be partial ids of tests to run  | 
1897  | 
    
 | 
1898  | 
    If arguments are given, they are regular expressions that say
 | 
|
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
1899  | 
    which tests should run.
 | 
| 
1552
by Martin Pool
 Improved help text for bzr selftest  | 
1900  | 
|
1901  | 
    If the global option '--no-plugins' is given, plugins are not loaded
 | 
|
1902  | 
    before running the selftests.  This has two effects: features provided or
 | 
|
1903  | 
    modified by plugins will not be tested, and tests provided by plugins will
 | 
|
1904  | 
    not be run.
 | 
|
1905  | 
||
1906  | 
    examples:
 | 
|
1907  | 
        bzr selftest ignore
 | 
|
1908  | 
        bzr --no-plugins selftest -v
 | 
|
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
1909  | 
    """
 | 
| 
1393.1.46
by Martin Pool
 - bzr selftest arguments can be partial ids of tests to run  | 
1910  | 
    # TODO: --list should give a list of all available tests
 | 
| 
1534.4.25
by Robert Collins
 Add a --transport parameter to the test suite to set the default transport to be used in the test suite.  | 
1911  | 
|
1912  | 
    # NB: this is used from the class without creating an instance, which is
 | 
|
1913  | 
    # why it does not have a self parameter.
 | 
|
1914  | 
def get_transport_type(typestring):  | 
|
1915  | 
"""Parse and return a transport specifier."""  | 
|
1916  | 
if typestring == "sftp":  | 
|
1917  | 
from bzrlib.transport.sftp import SFTPAbsoluteServer  | 
|
1918  | 
return SFTPAbsoluteServer  | 
|
| 
1534.4.26
by Robert Collins
 Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.  | 
1919  | 
if typestring == "memory":  | 
1920  | 
from bzrlib.transport.memory import MemoryServer  | 
|
1921  | 
return MemoryServer  | 
|
| 
1558.10.1
by Aaron Bentley
 Handle lockdirs over NFS properly  | 
1922  | 
if typestring == "fakenfs":  | 
| 
1558.10.2
by Robert Collins
 Refactor the FakeNFS support into a TransportDecorator.  | 
1923  | 
from bzrlib.transport.fakenfs import FakeNFSServer  | 
| 
1558.10.1
by Aaron Bentley
 Handle lockdirs over NFS properly  | 
1924  | 
return FakeNFSServer  | 
| 
1534.4.25
by Robert Collins
 Add a --transport parameter to the test suite to set the default transport to be used in the test suite.  | 
1925  | 
msg = "No known transport type %s. Supported types are: sftp\n" %\  | 
1926  | 
(typestring)  | 
|
1927  | 
raise BzrCommandError(msg)  | 
|
1928  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1929  | 
hidden = True  | 
| 
1185.1.57
by Robert Collins
 nuke --pattern to selftest, replace with regexp.search calls.  | 
1930  | 
takes_args = ['testspecs*']  | 
| 
1552
by Martin Pool
 Improved help text for bzr selftest  | 
1931  | 
takes_options = ['verbose',  | 
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
1932  | 
Option('one', help='stop when one test fails'),  | 
| 
1185.35.20
by Aaron Bentley
 Only keep test failure directories if --keep-output is specified  | 
1933  | 
Option('keep-output',  | 
| 
1534.4.25
by Robert Collins
 Add a --transport parameter to the test suite to set the default transport to be used in the test suite.  | 
1934  | 
help='keep output directories when tests fail'),  | 
1935  | 
Option('transport',  | 
|
1936  | 
help='Use a different transport by default '  | 
|
1937  | 
'throughout the test suite.',  | 
|
1938  | 
type=get_transport_type),  | 
|
| 
1707.2.1
by Robert Collins
 'bzr selftest --benchmark' will run a new benchmarking selftest.  | 
1939  | 
Option('benchmark', help='run the bzr bencharks.'),  | 
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
1940  | 
Option('lsprof-timed',  | 
1941  | 
help='generate lsprof output for benchmarked'  | 
|
1942  | 
' sections of code.'),  | 
|
1943  | 
                     ]
 | 
|
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
1944  | 
|
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
1945  | 
def run(self, testspecs_list=None, verbose=None, one=False,  | 
1946  | 
keep_output=False, transport=None, benchmark=None,  | 
|
1947  | 
lsprof_timed=None):  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1948  | 
import bzrlib.ui  | 
| 
1707.2.2
by Robert Collins
 Start on bench_add, an add benchtest.  | 
1949  | 
from bzrlib.tests import selftest  | 
1950  | 
import bzrlib.benchmarks as benchmarks  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1951  | 
        # we don't want progress meters from the tests to go to the
 | 
1952  | 
        # real output; and we don't want log messages cluttering up
 | 
|
1953  | 
        # the real logs.
 | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1954  | 
save_ui = ui.ui_factory  | 
1955  | 
print '%10s: %s' % ('bzr', osutils.realpath(sys.argv[0]))  | 
|
| 
1707.2.1
by Robert Collins
 'bzr selftest --benchmark' will run a new benchmarking selftest.  | 
1956  | 
print '%10s: %s' % ('bzrlib', bzrlib.__path__[0])  | 
1957  | 
        print
 | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1958  | 
info('running tests...')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1959  | 
try:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1960  | 
ui.ui_factory = ui.SilentUIFactory()  | 
| 
1185.1.57
by Robert Collins
 nuke --pattern to selftest, replace with regexp.search calls.  | 
1961  | 
if testspecs_list is not None:  | 
1962  | 
pattern = '|'.join(testspecs_list)  | 
|
1963  | 
else:  | 
|
1964  | 
pattern = ".*"  | 
|
| 
1707.2.1
by Robert Collins
 'bzr selftest --benchmark' will run a new benchmarking selftest.  | 
1965  | 
if benchmark:  | 
| 
1707.2.2
by Robert Collins
 Start on bench_add, an add benchtest.  | 
1966  | 
test_suite_factory = benchmarks.test_suite  | 
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
1967  | 
if verbose is None:  | 
1968  | 
verbose = True  | 
|
| 
1707.2.1
by Robert Collins
 'bzr selftest --benchmark' will run a new benchmarking selftest.  | 
1969  | 
else:  | 
1970  | 
test_suite_factory = None  | 
|
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
1971  | 
if verbose is None:  | 
1972  | 
verbose = False  | 
|
| 
1393.1.46
by Martin Pool
 - bzr selftest arguments can be partial ids of tests to run  | 
1973  | 
result = selftest(verbose=verbose,  | 
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
1974  | 
pattern=pattern,  | 
| 
1185.35.20
by Aaron Bentley
 Only keep test failure directories if --keep-output is specified  | 
1975  | 
stop_on_failure=one,  | 
| 
1534.4.25
by Robert Collins
 Add a --transport parameter to the test suite to set the default transport to be used in the test suite.  | 
1976  | 
keep_output=keep_output,  | 
| 
1707.2.1
by Robert Collins
 'bzr selftest --benchmark' will run a new benchmarking selftest.  | 
1977  | 
transport=transport,  | 
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
1978  | 
test_suite_factory=test_suite_factory,  | 
1979  | 
lsprof_timed=lsprof_timed)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1980  | 
if result:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1981  | 
info('tests passed')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1982  | 
else:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1983  | 
info('tests failed')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1984  | 
return int(not result)  | 
1985  | 
finally:  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1986  | 
ui.ui_factory = save_ui  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1987  | 
|
1988  | 
||
| 
1185.62.8
by John Arbash Meinel
 Deprecating bzrlib.get_bzr_revision, in favor of bzrlib.builtins._get_bzr_branch  | 
1989  | 
def _get_bzr_branch():  | 
1990  | 
"""If bzr is run from a branch, return Branch or None"""  | 
|
1991  | 
from os.path import dirname  | 
|
1992  | 
||
1993  | 
try:  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1994  | 
branch = Branch.open(dirname(osutils.abspath(dirname(__file__))))  | 
| 
1185.62.8
by John Arbash Meinel
 Deprecating bzrlib.get_bzr_revision, in favor of bzrlib.builtins._get_bzr_branch  | 
1995  | 
return branch  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1996  | 
except errors.BzrError:  | 
| 
1185.62.8
by John Arbash Meinel
 Deprecating bzrlib.get_bzr_revision, in favor of bzrlib.builtins._get_bzr_branch  | 
1997  | 
return None  | 
1998  | 
||
1999  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2000  | 
def show_version():  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2001  | 
import bzrlib  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2002  | 
print "bzr (bazaar-ng) %s" % bzrlib.__version__  | 
2003  | 
    # is bzrlib itself in a branch?
 | 
|
| 
1185.62.8
by John Arbash Meinel
 Deprecating bzrlib.get_bzr_revision, in favor of bzrlib.builtins._get_bzr_branch  | 
2004  | 
branch = _get_bzr_branch()  | 
2005  | 
if branch:  | 
|
2006  | 
rh = branch.revision_history()  | 
|
2007  | 
revno = len(rh)  | 
|
| 
1185.62.1
by John Arbash Meinel
 bzr --version prints branch nickname.  | 
2008  | 
print " bzr checkout, revision %d" % (revno,)  | 
2009  | 
print " nick: %s" % (branch.nick,)  | 
|
| 
1185.62.8
by John Arbash Meinel
 Deprecating bzrlib.get_bzr_revision, in favor of bzrlib.builtins._get_bzr_branch  | 
2010  | 
if rh:  | 
2011  | 
print " revid: %s" % (rh[-1],)  | 
|
| 
1711.2.29
by John Arbash Meinel
 [patch] Lalo Martins: add python path information to bzr --version  | 
2012  | 
print "Using python interpreter:", sys.executable  | 
2013  | 
import site  | 
|
2014  | 
print "Using python standard library:", os.path.dirname(site.__file__)  | 
|
2015  | 
print "Using bzrlib:",  | 
|
2016  | 
if len(bzrlib.__path__) > 1:  | 
|
2017  | 
        # print repr, which is a good enough way of making it clear it's
 | 
|
2018  | 
        # more than one element (eg ['/foo/bar', '/foo/bzr'])
 | 
|
2019  | 
print repr(bzrlib.__path__)  | 
|
2020  | 
else:  | 
|
2021  | 
print bzrlib.__path__[0]  | 
|
2022  | 
||
2023  | 
    print
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2024  | 
print bzrlib.__copyright__  | 
| 
1185.50.94
by John Arbash Meinel
 Updated web page url to http://bazaar-vcs.org  | 
2025  | 
print "http://bazaar-vcs.org/"  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2026  | 
    print
 | 
2027  | 
print "bzr comes with ABSOLUTELY NO WARRANTY. bzr is free software, and"  | 
|
2028  | 
print "you may use, modify and redistribute it under the terms of the GNU"  | 
|
2029  | 
print "General Public License version 2 or later."  | 
|
2030  | 
||
2031  | 
||
2032  | 
class cmd_version(Command):  | 
|
2033  | 
"""Show version of bzr."""  | 
|
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
2034  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2035  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2036  | 
def run(self):  | 
2037  | 
show_version()  | 
|
2038  | 
||
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
2039  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2040  | 
class cmd_rocks(Command):  | 
2041  | 
"""Statement of optimism."""  | 
|
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
2042  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2043  | 
hidden = True  | 
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
2044  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2045  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2046  | 
def run(self):  | 
2047  | 
print "it sure does!"  | 
|
2048  | 
||
2049  | 
||
2050  | 
class cmd_find_merge_base(Command):  | 
|
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
2051  | 
"""Find and print a base revision for merging two branches."""  | 
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
2052  | 
    # TODO: Options to specify revisions on either side, as if
 | 
2053  | 
    #       merging only part of the history.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2054  | 
takes_args = ['branch', 'other']  | 
2055  | 
hidden = True  | 
|
2056  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2057  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2058  | 
def run(self, branch, other):  | 
| 
1155
by Martin Pool
 - update find-merge-base to use new common_ancestor code  | 
2059  | 
from bzrlib.revision import common_ancestor, MultipleRevisionSources  | 
2060  | 
||
| 
1442.1.64
by Robert Collins
 Branch.open_containing now returns a tuple (Branch, relative-path).  | 
2061  | 
branch1 = Branch.open_containing(branch)[0]  | 
2062  | 
branch2 = Branch.open_containing(other)[0]  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2063  | 
|
| 
1155
by Martin Pool
 - update find-merge-base to use new common_ancestor code  | 
2064  | 
history_1 = branch1.revision_history()  | 
2065  | 
history_2 = branch2.revision_history()  | 
|
2066  | 
||
| 
1241
by Martin Pool
 - rename last_patch to last_revision  | 
2067  | 
last1 = branch1.last_revision()  | 
2068  | 
last2 = branch2.last_revision()  | 
|
| 
1155
by Martin Pool
 - update find-merge-base to use new common_ancestor code  | 
2069  | 
|
| 
1551.2.2
by Aaron Bentley
 Fix find-merge-base for new API [recommit]  | 
2070  | 
source = MultipleRevisionSources(branch1.repository,  | 
2071  | 
branch2.repository)  | 
|
| 
1155
by Martin Pool
 - update find-merge-base to use new common_ancestor code  | 
2072  | 
|
2073  | 
base_rev_id = common_ancestor(last1, last2, source)  | 
|
2074  | 
||
2075  | 
print 'merge base is revision %s' % base_rev_id  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2076  | 
|
2077  | 
||
2078  | 
class cmd_merge(Command):  | 
|
2079  | 
"""Perform a three-way merge.  | 
|
2080  | 
    
 | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2081  | 
    The branch is the branch you will merge from.  By default, it will merge
 | 
2082  | 
    the latest revision.  If you specify a revision, that revision will be
 | 
|
2083  | 
    merged.  If you specify two revisions, the first will be used as a BASE,
 | 
|
2084  | 
    and the second one as OTHER.  Revision numbers are always relative to the
 | 
|
2085  | 
    specified branch.
 | 
|
| 
1172
by Martin Pool
 - better explanation when merge fails with AmbiguousBase  | 
2086  | 
|
| 
1551.2.19
by Aaron Bentley
 Added See Conflicts to merge help  | 
2087  | 
    By default, bzr will try to merge in all new work from the other
 | 
| 
1172
by Martin Pool
 - better explanation when merge fails with AmbiguousBase  | 
2088  | 
    branch, automatically determining an appropriate base.  If this
 | 
2089  | 
    fails, you may need to give an explicit base.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2090  | 
    
 | 
| 
1551.2.18
by Aaron Bentley
 Updated docs to clarify conflict handling  | 
2091  | 
    Merge will do its best to combine the changes in two branches, but there
 | 
2092  | 
    are some kinds of problems only a human can fix.  When it encounters those,
 | 
|
2093  | 
    it will mark a conflict.  A conflict means that you need to fix something,
 | 
|
2094  | 
    before you should commit.
 | 
|
2095  | 
||
| 
1551.2.19
by Aaron Bentley
 Added See Conflicts to merge help  | 
2096  | 
    Use bzr resolve when you have fixed a problem.  See also bzr conflicts.
 | 
| 
1551.2.18
by Aaron Bentley
 Updated docs to clarify conflict handling  | 
2097  | 
|
| 
1614.2.4
by Olaf Conradi
 Renamed argument location in command merge back to branch.  | 
2098  | 
    If there is no default branch set, the first merge will set it. After
 | 
2099  | 
    that, you can omit the branch to use the default.  To change the
 | 
|
| 
1785.1.4
by John Arbash Meinel
 Update help for the new --remember semantics.  | 
2100  | 
    default, use --remember. The value will only be saved if the remote
 | 
2101  | 
    location can be accessed.
 | 
|
| 
1614.2.2
by Olaf Conradi
 Merge command:  | 
2102  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2103  | 
    Examples:
 | 
2104  | 
||
2105  | 
    To merge the latest revision from bzr.dev
 | 
|
2106  | 
    bzr merge ../bzr.dev
 | 
|
2107  | 
||
2108  | 
    To merge changes up to and including revision 82 from bzr.dev
 | 
|
2109  | 
    bzr merge -r 82 ../bzr.dev
 | 
|
2110  | 
||
2111  | 
    To merge the changes introduced by 82, without previous changes:
 | 
|
2112  | 
    bzr merge -r 81..82 ../bzr.dev
 | 
|
2113  | 
    
 | 
|
2114  | 
    merge refuses to run if there are any uncommitted changes, unless
 | 
|
2115  | 
    --force is given.
 | 
|
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
2116  | 
|
2117  | 
    The following merge types are available:
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2118  | 
    """
 | 
| 
1614.2.4
by Olaf Conradi
 Renamed argument location in command merge back to branch.  | 
2119  | 
takes_args = ['branch?']  | 
| 
1614.2.2
by Olaf Conradi
 Merge command:  | 
2120  | 
takes_options = ['revision', 'force', 'merge-type', 'reprocess', 'remember',  | 
| 
1185.18.1
by Aaron Bentley
 Added --show-base to merge  | 
2121  | 
Option('show-base', help="Show base revision text in "  | 
2122  | 
"conflicts")]  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2123  | 
|
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
2124  | 
def help(self):  | 
2125  | 
from merge import merge_type_help  | 
|
2126  | 
from inspect import getdoc  | 
|
2127  | 
return getdoc(self) + '\n' + merge_type_help()  | 
|
2128  | 
||
| 
1614.2.4
by Olaf Conradi
 Renamed argument location in command merge back to branch.  | 
2129  | 
def run(self, branch=None, revision=None, force=False, merge_type=None,  | 
| 
1614.2.2
by Olaf Conradi
 Merge command:  | 
2130  | 
show_base=False, reprocess=False, remember=False):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2131  | 
if merge_type is None:  | 
| 
1534.7.139
by Aaron Bentley
 ApplyMerge3 -> Merge3Merger  | 
2132  | 
merge_type = Merge3Merger  | 
| 
1614.2.2
by Olaf Conradi
 Merge command:  | 
2133  | 
|
2134  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
|
| 
1685.1.69
by Wouter van Heyst
 merge bzr.dev 1740  | 
2135  | 
|
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
2136  | 
if branch is not None:  | 
2137  | 
try:  | 
|
| 
1773.4.3
by Martin Pool
 [merge] bzr.dev  | 
2138  | 
reader = bundle.read_bundle_from_url(branch)  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
2139  | 
except NotABundle:  | 
2140  | 
pass # Continue on considering this url a Branch  | 
|
| 
1185.82.25
by Aaron Bentley
 Added changeset-merging functionality  | 
2141  | 
else:  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
2142  | 
conflicts = merge_bundle(reader, tree, not force, merge_type,  | 
2143  | 
reprocess, show_base)  | 
|
2144  | 
if conflicts == 0:  | 
|
2145  | 
return 0  | 
|
2146  | 
else:  | 
|
2147  | 
return 1  | 
|
| 
1185.82.25
by Aaron Bentley
 Added changeset-merging functionality  | 
2148  | 
|
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
2149  | 
branch = self._get_remembered_parent(tree, branch, 'Merging from')  | 
| 
1614.2.6
by Olaf Conradi
 Add testcase for --remember when merge fails. It should still remember  | 
2150  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2151  | 
if revision is None or len(revision) < 1:  | 
2152  | 
base = [None, None]  | 
|
| 
1614.2.4
by Olaf Conradi
 Renamed argument location in command merge back to branch.  | 
2153  | 
other = [branch, -1]  | 
| 
1645.1.1
by Aaron Bentley
 Implement single-file merge  | 
2154  | 
other_branch, path = Branch.open_containing(branch)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2155  | 
else:  | 
2156  | 
if len(revision) == 1:  | 
|
| 
974.1.52
by aaron.bentley at utoronto
 Merged mpool's latest changes (~0.0.7)  | 
2157  | 
base = [None, None]  | 
| 
1645.1.1
by Aaron Bentley
 Implement single-file merge  | 
2158  | 
other_branch, path = Branch.open_containing(branch)  | 
| 
1185.12.46
by Aaron Bentley
 Fixed -r brokenness in merge  | 
2159  | 
revno = revision[0].in_history(other_branch).revno  | 
| 
1614.2.4
by Olaf Conradi
 Renamed argument location in command merge back to branch.  | 
2160  | 
other = [branch, revno]  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2161  | 
else:  | 
2162  | 
assert len(revision) == 2  | 
|
2163  | 
if None in revision:  | 
|
2164  | 
raise BzrCommandError(  | 
|
2165  | 
"Merge doesn't permit that revision specifier.")  | 
|
| 
1685.1.19
by John Arbash Meinel
 pull/merge/branch/missing should all save the absolute path to the other branch, not the relative one  | 
2166  | 
other_branch, path = Branch.open_containing(branch)  | 
2167  | 
||
2168  | 
base = [branch, revision[0].in_history(other_branch).revno]  | 
|
2169  | 
other = [branch, revision[1].in_history(other_branch).revno]  | 
|
2170  | 
||
2171  | 
if tree.branch.get_parent() is None or remember:  | 
|
2172  | 
tree.branch.set_parent(other_branch.base)  | 
|
2173  | 
||
| 
1645.1.1
by Aaron Bentley
 Implement single-file merge  | 
2174  | 
if path != "":  | 
2175  | 
interesting_files = [path]  | 
|
2176  | 
else:  | 
|
2177  | 
interesting_files = None  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2178  | 
pb = ui.ui_factory.nested_progress_bar()  | 
| 
1172
by Martin Pool
 - better explanation when merge fails with AmbiguousBase  | 
2179  | 
try:  | 
| 
1551.2.25
by Aaron Bentley
 Stop using deprecated methods in merge and revert  | 
2180  | 
try:  | 
2181  | 
conflict_count = merge(other, base, check_clean=(not force),  | 
|
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
2182  | 
merge_type=merge_type,  | 
| 
1551.2.25
by Aaron Bentley
 Stop using deprecated methods in merge and revert  | 
2183  | 
reprocess=reprocess,  | 
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
2184  | 
show_base=show_base,  | 
| 
1645.1.1
by Aaron Bentley
 Implement single-file merge  | 
2185  | 
pb=pb, file_list=interesting_files)  | 
| 
1551.2.25
by Aaron Bentley
 Stop using deprecated methods in merge and revert  | 
2186  | 
finally:  | 
2187  | 
pb.finished()  | 
|
| 
1476
by Robert Collins
 Merge now has a retcode of 1 when conflicts occur. (Robert Collins)  | 
2188  | 
if conflict_count != 0:  | 
2189  | 
return 1  | 
|
2190  | 
else:  | 
|
2191  | 
return 0  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2192  | 
except errors.AmbiguousBase, e:  | 
| 
1173
by Martin Pool
 - message typo  | 
2193  | 
m = ("sorry, bzr can't determine the right merge base yet\n"  | 
| 
1172
by Martin Pool
 - better explanation when merge fails with AmbiguousBase  | 
2194  | 
"candidates are:\n "  | 
2195  | 
+ "\n ".join(e.bases)  | 
|
2196  | 
+ "\n"  | 
|
2197  | 
"please specify an explicit base with -r,\n"  | 
|
2198  | 
"and (if you want) report this to the bzr developers\n")  | 
|
2199  | 
log_error(m)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2200  | 
|
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
2201  | 
    # TODO: move up to common parent; this isn't merge-specific anymore. 
 | 
2202  | 
def _get_remembered_parent(self, tree, supplied_location, verb_string):  | 
|
2203  | 
"""Use tree.branch's parent if none was supplied.  | 
|
2204  | 
||
2205  | 
        Report if the remembered location was used.
 | 
|
2206  | 
        """
 | 
|
2207  | 
if supplied_location is not None:  | 
|
2208  | 
return supplied_location  | 
|
2209  | 
stored_location = tree.branch.get_parent()  | 
|
| 
1685.1.71
by Wouter van Heyst
 change branch.{get,set}_parent to store a relative path but return full urls  | 
2210  | 
mutter("%s", stored_location)  | 
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
2211  | 
if stored_location is None:  | 
2212  | 
raise BzrCommandError("No location specified or remembered")  | 
|
2213  | 
display_url = urlutils.unescape_for_display(stored_location, self.outf.encoding)  | 
|
2214  | 
self.outf.write("%s remembered location %s\n" % (verb_string, display_url))  | 
|
2215  | 
return stored_location  | 
|
2216  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2217  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2218  | 
class cmd_remerge(Command):  | 
2219  | 
"""Redo a merge.  | 
|
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
2220  | 
|
2221  | 
    Use this if you want to try a different merge technique while resolving
 | 
|
2222  | 
    conflicts.  Some merge techniques are better than others, and remerge 
 | 
|
2223  | 
    lets you try different ones on different files.
 | 
|
2224  | 
||
2225  | 
    The options for remerge have the same meaning and defaults as the ones for
 | 
|
2226  | 
    merge.  The difference is that remerge can (only) be run when there is a
 | 
|
2227  | 
    pending merge, and it lets you specify particular files.
 | 
|
2228  | 
||
2229  | 
    Examples:
 | 
|
2230  | 
    $ bzr remerge --show-base
 | 
|
2231  | 
        Re-do the merge of all conflicted files, and show the base text in
 | 
|
2232  | 
        conflict regions, in addition to the usual THIS and OTHER texts.
 | 
|
2233  | 
||
2234  | 
    $ bzr remerge --merge-type weave --reprocess foobar
 | 
|
2235  | 
        Re-do the merge of "foobar", using the weave merge algorithm, with
 | 
|
2236  | 
        additional processing to reduce the size of conflict regions.
 | 
|
2237  | 
    
 | 
|
2238  | 
    The following merge types are available:"""
 | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2239  | 
takes_args = ['file*']  | 
2240  | 
takes_options = ['merge-type', 'reprocess',  | 
|
2241  | 
Option('show-base', help="Show base revision text in "  | 
|
2242  | 
"conflicts")]  | 
|
2243  | 
||
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
2244  | 
def help(self):  | 
2245  | 
from merge import merge_type_help  | 
|
2246  | 
from inspect import getdoc  | 
|
2247  | 
return getdoc(self) + '\n' + merge_type_help()  | 
|
2248  | 
||
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2249  | 
def run(self, file_list=None, merge_type=None, show_base=False,  | 
2250  | 
reprocess=False):  | 
|
2251  | 
from bzrlib.merge import merge_inner, transform_tree  | 
|
2252  | 
if merge_type is None:  | 
|
| 
1534.7.139
by Aaron Bentley
 ApplyMerge3 -> Merge3Merger  | 
2253  | 
merge_type = Merge3Merger  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2254  | 
tree, file_list = tree_files(file_list)  | 
2255  | 
tree.lock_write()  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2256  | 
try:  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2257  | 
pending_merges = tree.pending_merges()  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2258  | 
if len(pending_merges) != 1:  | 
2259  | 
raise BzrCommandError("Sorry, remerge only works after normal"  | 
|
| 
1711.2.70
by John Arbash Meinel
 Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.  | 
2260  | 
                                      " merges.  Not cherrypicking or"
 | 
2261  | 
" multi-merges.")  | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
2262  | 
repository = tree.branch.repository  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2263  | 
base_revision = common_ancestor(tree.branch.last_revision(),  | 
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
2264  | 
pending_merges[0], repository)  | 
2265  | 
base_tree = repository.revision_tree(base_revision)  | 
|
2266  | 
other_tree = repository.revision_tree(pending_merges[0])  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2267  | 
interesting_ids = None  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
2268  | 
new_conflicts = []  | 
2269  | 
conflicts = tree.conflicts()  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2270  | 
if file_list is not None:  | 
2271  | 
interesting_ids = set()  | 
|
2272  | 
for filename in file_list:  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2273  | 
file_id = tree.path2id(filename)  | 
| 
1558.2.1
by Aaron Bentley
 Ensure remerge errors when file-id is None  | 
2274  | 
if file_id is None:  | 
2275  | 
raise NotVersionedError(filename)  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2276  | 
interesting_ids.add(file_id)  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2277  | 
if tree.kind(file_id) != "directory":  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2278  | 
                        continue
 | 
| 
1185.35.13
by Aaron Bentley
 Merged Martin  | 
2279  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2280  | 
for name, ie in tree.inventory.iter_entries(file_id):  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2281  | 
interesting_ids.add(ie.file_id)  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
2282  | 
new_conflicts = conflicts.select_conflicts(tree, file_list)[0]  | 
| 
1534.4.35
by Robert Collins
 Give branch its own basis tree and last_revision methods; deprecated branch.working_tree()  | 
2283  | 
transform_tree(tree, tree.basis_tree(), interesting_ids)  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
2284  | 
tree.set_conflicts(ConflictList(new_conflicts))  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2285  | 
if file_list is None:  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2286  | 
restore_files = list(tree.iter_conflicts())  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2287  | 
else:  | 
2288  | 
restore_files = file_list  | 
|
2289  | 
for filename in restore_files:  | 
|
2290  | 
try:  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2291  | 
restore(tree.abspath(filename))  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2292  | 
except NotConflicted:  | 
2293  | 
                    pass
 | 
|
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
2294  | 
conflicts = merge_inner(tree.branch, other_tree, base_tree,  | 
2295  | 
this_tree=tree,  | 
|
| 
1551.7.12
by Aaron Bentley
 Fix spacing  | 
2296  | 
interesting_ids=interesting_ids,  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
2297  | 
other_rev_id=pending_merges[0],  | 
2298  | 
merge_type=merge_type,  | 
|
2299  | 
show_base=show_base,  | 
|
2300  | 
reprocess=reprocess)  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2301  | 
finally:  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
2302  | 
tree.unlock()  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2303  | 
if conflicts > 0:  | 
2304  | 
return 1  | 
|
2305  | 
else:  | 
|
2306  | 
return 0  | 
|
2307  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2308  | 
class cmd_revert(Command):  | 
2309  | 
"""Reverse all changes since the last commit.  | 
|
2310  | 
||
2311  | 
    Only versioned files are affected.  Specify filenames to revert only 
 | 
|
2312  | 
    those files.  By default, any files that are changed will be backed up
 | 
|
2313  | 
    first.  Backup files have a '~' appended to their name.
 | 
|
2314  | 
    """
 | 
|
2315  | 
takes_options = ['revision', 'no-backup']  | 
|
2316  | 
takes_args = ['file*']  | 
|
2317  | 
aliases = ['merge-revert']  | 
|
2318  | 
||
2319  | 
def run(self, revision=None, no_backup=False, file_list=None):  | 
|
2320  | 
from bzrlib.commands import parse_spec  | 
|
2321  | 
if file_list is not None:  | 
|
2322  | 
if len(file_list) == 0:  | 
|
2323  | 
raise BzrCommandError("No files specified")  | 
|
| 
1457.1.9
by Robert Collins
 Change cmd_revert implementation to call workingtree.Revert.  | 
2324  | 
else:  | 
2325  | 
file_list = []  | 
|
| 
1185.50.53
by John Arbash Meinel
 [patch] Aaron Bentley: make revert work in a subdirectory.  | 
2326  | 
|
2327  | 
tree, file_list = tree_files(file_list)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2328  | 
if revision is None:  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2329  | 
            # FIXME should be tree.last_revision
 | 
| 
1558.4.2
by Aaron Bentley
 Revert in checkout works properly  | 
2330  | 
rev_id = tree.last_revision()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2331  | 
elif len(revision) != 1:  | 
2332  | 
raise BzrCommandError('bzr revert --revision takes exactly 1 argument')  | 
|
| 
1185.5.8
by John Arbash Meinel
 Fixed bzr revert with the new RevisionSpec code.  | 
2333  | 
else:  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2334  | 
rev_id = revision[0].in_history(tree.branch).rev_id  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2335  | 
pb = ui.ui_factory.nested_progress_bar()  | 
| 
1551.2.25
by Aaron Bentley
 Stop using deprecated methods in merge and revert  | 
2336  | 
try:  | 
2337  | 
tree.revert(file_list,  | 
|
2338  | 
tree.branch.repository.revision_tree(rev_id),  | 
|
2339  | 
not no_backup, pb)  | 
|
2340  | 
finally:  | 
|
2341  | 
pb.finished()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2342  | 
|
2343  | 
||
2344  | 
class cmd_assert_fail(Command):  | 
|
2345  | 
"""Test reporting of assertion failures"""  | 
|
2346  | 
hidden = True  | 
|
2347  | 
def run(self):  | 
|
2348  | 
assert False, "always fails"  | 
|
2349  | 
||
2350  | 
||
2351  | 
class cmd_help(Command):  | 
|
2352  | 
"""Show help on a command or other topic.  | 
|
2353  | 
||
2354  | 
    For a list of all available commands, say 'bzr help commands'."""
 | 
|
| 
1553.4.3
by Michael Ellerman
 Add custom description for help's --long option, this fixes bug #31217.  | 
2355  | 
takes_options = [Option('long', 'show help on all commands')]  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2356  | 
takes_args = ['topic?']  | 
| 
1616.1.15
by Martin Pool
 Handle 'bzr ?', etc.  | 
2357  | 
aliases = ['?', '--help', '-?', '-h']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2358  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2359  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2360  | 
def run(self, topic=None, long=False):  | 
2361  | 
import help  | 
|
2362  | 
if topic is None and long:  | 
|
2363  | 
topic = "commands"  | 
|
2364  | 
help.help(topic)  | 
|
2365  | 
||
2366  | 
||
2367  | 
class cmd_shell_complete(Command):  | 
|
2368  | 
"""Show appropriate completions for context.  | 
|
2369  | 
||
2370  | 
    For a list of all available commands, say 'bzr shell-complete'."""
 | 
|
2371  | 
takes_args = ['context?']  | 
|
2372  | 
aliases = ['s-c']  | 
|
2373  | 
hidden = True  | 
|
2374  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2375  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2376  | 
def run(self, context=None):  | 
2377  | 
import shellcomplete  | 
|
2378  | 
shellcomplete.shellcomplete(context)  | 
|
2379  | 
||
2380  | 
||
| 
1228
by Martin Pool
 - add fetch command as builtin  | 
2381  | 
class cmd_fetch(Command):  | 
2382  | 
"""Copy in history from another branch but don't merge it.  | 
|
2383  | 
||
2384  | 
    This is an internal method used for pull and merge."""
 | 
|
2385  | 
hidden = True  | 
|
2386  | 
takes_args = ['from_branch', 'to_branch']  | 
|
2387  | 
def run(self, from_branch, to_branch):  | 
|
2388  | 
from bzrlib.fetch import Fetcher  | 
|
| 
1185.16.100
by mbp at sourcefrog
 Update fetch command for new Branch constructors.  | 
2389  | 
from_b = Branch.open(from_branch)  | 
2390  | 
to_b = Branch.open(to_branch)  | 
|
| 
1185.65.27
by Robert Collins
 Tweak storage towards mergability.  | 
2391  | 
Fetcher(to_b, from_b)  | 
| 
1228
by Martin Pool
 - add fetch command as builtin  | 
2392  | 
|
2393  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2394  | 
class cmd_missing(Command):  | 
| 
1185.54.3
by Aaron Bentley
 Factored out find_unmerged  | 
2395  | 
"""Show unmerged/unpulled revisions between two branches.  | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
2396  | 
|
| 
1185.54.3
by Aaron Bentley
 Factored out find_unmerged  | 
2397  | 
    OTHER_BRANCH may be local or remote."""
 | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
2398  | 
takes_args = ['other_branch?']  | 
2399  | 
takes_options = [Option('reverse', 'Reverse the order of revisions'),  | 
|
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
2400  | 
Option('mine-only',  | 
2401  | 
'Display changes in the local branch only'),  | 
|
2402  | 
Option('theirs-only',  | 
|
2403  | 
'Display changes in the remote branch only'),  | 
|
| 
1553.2.3
by Erik Bågfors
 cover the missing command with formatters as well  | 
2404  | 
'log-format',  | 
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
2405  | 
'line',  | 
2406  | 
'long',  | 
|
2407  | 
'short',  | 
|
2408  | 
'show-ids',  | 
|
| 
1185.54.19
by Aaron Bentley
 All tests pass  | 
2409  | 
                     'verbose'
 | 
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
2410  | 
                     ]
 | 
| 
1816.1.2
by Alexander Belchenko
 fix non-ascii messages handling in 'missing' command  | 
2411  | 
encoding_type = 'replace'  | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
2412  | 
|
| 
1816.1.2
by Alexander Belchenko
 fix non-ascii messages handling in 'missing' command  | 
2413  | 
    @display_command
 | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
2414  | 
def run(self, other_branch=None, reverse=False, mine_only=False,  | 
| 
1553.2.6
by Erik Bågfors
 Make default formatter work for the missing command  | 
2415  | 
theirs_only=False, log_format=None, long=False, short=False, line=False,  | 
| 
1185.54.19
by Aaron Bentley
 All tests pass  | 
2416  | 
show_ids=False, verbose=False):  | 
2417  | 
from bzrlib.missing import find_unmerged, iter_log_data  | 
|
| 
1185.54.12
by Aaron Bentley
 Added log formatter selection and show-ids to missing  | 
2418  | 
from bzrlib.log import log_formatter  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2419  | 
local_branch = Branch.open_containing(u".")[0]  | 
| 
1185.54.16
by Aaron Bentley
 fixed location handling to match old missing  | 
2420  | 
parent = local_branch.get_parent()  | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
2421  | 
if other_branch is None:  | 
| 
1185.54.16
by Aaron Bentley
 fixed location handling to match old missing  | 
2422  | 
other_branch = parent  | 
2423  | 
if other_branch is None:  | 
|
| 
1624.4.8
by Jamie Wilkinson
 doc: make error message make more sense  | 
2424  | 
raise BzrCommandError("No peer location known or specified.")  | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
2425  | 
print "Using last location: " + local_branch.get_parent()  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2426  | 
remote_branch = Branch.open(other_branch)  | 
| 
1551.2.46
by abentley
 Made bzr missing . work on win32  | 
2427  | 
if remote_branch.base == local_branch.base:  | 
2428  | 
remote_branch = local_branch  | 
|
| 
1666.1.5
by Robert Collins
 Merge bound branch test performance improvements.  | 
2429  | 
local_branch.lock_read()  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
2430  | 
try:  | 
| 
1551.2.46
by abentley
 Made bzr missing . work on win32  | 
2431  | 
remote_branch.lock_read()  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
2432  | 
try:  | 
2433  | 
local_extra, remote_extra = find_unmerged(local_branch, remote_branch)  | 
|
2434  | 
if (log_format == None):  | 
|
| 
1770.2.9
by Aaron Bentley
 Add Branch.get_config, update BranchConfig() callers  | 
2435  | 
default = local_branch.get_config().log_format()  | 
2436  | 
log_format = get_log_format(long=long, short=short,  | 
|
2437  | 
line=line, default=default)  | 
|
| 
1816.1.2
by Alexander Belchenko
 fix non-ascii messages handling in 'missing' command  | 
2438  | 
lf = log_formatter(log_format,  | 
2439  | 
to_file=self.outf,  | 
|
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
2440  | 
show_ids=show_ids,  | 
2441  | 
show_timezone='original')  | 
|
2442  | 
if reverse is False:  | 
|
2443  | 
local_extra.reverse()  | 
|
2444  | 
remote_extra.reverse()  | 
|
2445  | 
if local_extra and not theirs_only:  | 
|
2446  | 
print "You have %d extra revision(s):" % len(local_extra)  | 
|
2447  | 
for data in iter_log_data(local_extra, local_branch.repository,  | 
|
2448  | 
verbose):  | 
|
2449  | 
lf.show(*data)  | 
|
2450  | 
printed_local = True  | 
|
2451  | 
else:  | 
|
2452  | 
printed_local = False  | 
|
2453  | 
if remote_extra and not mine_only:  | 
|
2454  | 
if printed_local is True:  | 
|
2455  | 
print "\n\n"  | 
|
2456  | 
print "You are missing %d revision(s):" % len(remote_extra)  | 
|
2457  | 
for data in iter_log_data(remote_extra, remote_branch.repository,  | 
|
2458  | 
verbose):  | 
|
2459  | 
lf.show(*data)  | 
|
2460  | 
if not remote_extra and not local_extra:  | 
|
2461  | 
status_code = 0  | 
|
2462  | 
print "Branches are up to date."  | 
|
2463  | 
else:  | 
|
2464  | 
status_code = 1  | 
|
2465  | 
finally:  | 
|
| 
1666.1.5
by Robert Collins
 Merge bound branch test performance improvements.  | 
2466  | 
remote_branch.unlock()  | 
2467  | 
finally:  | 
|
2468  | 
local_branch.unlock()  | 
|
2469  | 
if not status_code and parent is None and other_branch is not None:  | 
|
2470  | 
local_branch.lock_write()  | 
|
2471  | 
try:  | 
|
2472  | 
                # handle race conditions - a parent might be set while we run.
 | 
|
2473  | 
if local_branch.get_parent() is None:  | 
|
| 
1685.1.19
by John Arbash Meinel
 pull/merge/branch/missing should all save the absolute path to the other branch, not the relative one  | 
2474  | 
local_branch.set_parent(remote_branch.base)  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
2475  | 
finally:  | 
2476  | 
local_branch.unlock()  | 
|
| 
1666.1.5
by Robert Collins
 Merge bound branch test performance improvements.  | 
2477  | 
return status_code  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2478  | 
|
2479  | 
||
2480  | 
class cmd_plugins(Command):  | 
|
2481  | 
"""List plugins"""  | 
|
2482  | 
hidden = True  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2483  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2484  | 
def run(self):  | 
2485  | 
import bzrlib.plugin  | 
|
2486  | 
from inspect import getdoc  | 
|
| 
1516
by Robert Collins
 * bzrlib.plugin.all_plugins has been changed from an attribute to a  | 
2487  | 
for name, plugin in bzrlib.plugin.all_plugins().items():  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2488  | 
if hasattr(plugin, '__path__'):  | 
2489  | 
print plugin.__path__[0]  | 
|
2490  | 
elif hasattr(plugin, '__file__'):  | 
|
2491  | 
print plugin.__file__  | 
|
2492  | 
else:  | 
|
2493  | 
print `plugin`  | 
|
2494  | 
||
2495  | 
d = getdoc(plugin)  | 
|
2496  | 
if d:  | 
|
2497  | 
print '\t', d.split('\n')[0]  | 
|
2498  | 
||
2499  | 
||
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
2500  | 
class cmd_testament(Command):  | 
2501  | 
"""Show testament (signing-form) of a revision."""  | 
|
| 
1551.7.1
by Aaron Bentley
 Implement --strict at commandline, fix up strict format  | 
2502  | 
takes_options = ['revision', 'long',  | 
2503  | 
Option('strict', help='Produce a strict-format'  | 
|
2504  | 
' testament')]  | 
|
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
2505  | 
takes_args = ['branch?']  | 
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2506  | 
    @display_command
 | 
| 
1551.7.1
by Aaron Bentley
 Implement --strict at commandline, fix up strict format  | 
2507  | 
def run(self, branch=u'.', revision=None, long=False, strict=False):  | 
2508  | 
from bzrlib.testament import Testament, StrictTestament  | 
|
2509  | 
if strict is True:  | 
|
2510  | 
testament_class = StrictTestament  | 
|
2511  | 
else:  | 
|
2512  | 
testament_class = Testament  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2513  | 
b = WorkingTree.open_containing(branch)[0].branch  | 
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
2514  | 
b.lock_read()  | 
2515  | 
try:  | 
|
2516  | 
if revision is None:  | 
|
2517  | 
rev_id = b.last_revision()  | 
|
2518  | 
else:  | 
|
2519  | 
rev_id = revision[0].in_history(b).rev_id  | 
|
| 
1551.7.1
by Aaron Bentley
 Implement --strict at commandline, fix up strict format  | 
2520  | 
t = testament_class.from_revision(b.repository, rev_id)  | 
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
2521  | 
if long:  | 
2522  | 
sys.stdout.writelines(t.as_text_lines())  | 
|
2523  | 
else:  | 
|
2524  | 
sys.stdout.write(t.as_short_text())  | 
|
2525  | 
finally:  | 
|
2526  | 
b.unlock()  | 
|
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2527  | 
|
2528  | 
||
2529  | 
class cmd_annotate(Command):  | 
|
2530  | 
"""Show the origin of each line in a file.  | 
|
2531  | 
||
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
2532  | 
    This prints out the given file with an annotation on the left side
 | 
2533  | 
    indicating which revision, author and date introduced the change.
 | 
|
2534  | 
||
2535  | 
    If the origin is the same for a run of consecutive lines, it is 
 | 
|
2536  | 
    shown only at the top, unless the --all option is given.
 | 
|
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2537  | 
    """
 | 
2538  | 
    # TODO: annotate directories; showing when each file was last changed
 | 
|
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
2539  | 
    # TODO: if the working copy is modified, show annotations on that 
 | 
2540  | 
    #       with new uncommitted lines marked
 | 
|
| 
1733.2.8
by Michael Ellerman
 Add CVS compatible aliases for checkout and annotate, from fullermd.  | 
2541  | 
aliases = ['ann', 'blame', 'praise']  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2542  | 
takes_args = ['filename']  | 
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
2543  | 
takes_options = [Option('all', help='show annotations on all lines'),  | 
2544  | 
Option('long', help='show date in annotations'),  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
2545  | 
                     'revision'
 | 
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
2546  | 
                     ]
 | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2547  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2548  | 
    @display_command
 | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
2549  | 
def run(self, filename, all=False, long=False, revision=None):  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2550  | 
from bzrlib.annotate import annotate_file  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2551  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
2552  | 
branch = tree.branch  | 
|
2553  | 
branch.lock_read()  | 
|
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2554  | 
try:  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
2555  | 
if revision is None:  | 
| 
1558.14.5
by Aaron Bentley
 Changed rev_id to revision_id in cmd_annotate  | 
2556  | 
revision_id = branch.last_revision()  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
2557  | 
elif len(revision) != 1:  | 
2558  | 
raise BzrCommandError('bzr annotate --revision takes exactly 1 argument')  | 
|
2559  | 
else:  | 
|
| 
1558.14.5
by Aaron Bentley
 Changed rev_id to revision_id in cmd_annotate  | 
2560  | 
revision_id = revision[0].in_history(branch).rev_id  | 
| 
1442.1.64
by Robert Collins
 Branch.open_containing now returns a tuple (Branch, relative-path).  | 
2561  | 
file_id = tree.inventory.path2id(relpath)  | 
| 
1558.14.5
by Aaron Bentley
 Changed rev_id to revision_id in cmd_annotate  | 
2562  | 
tree = branch.repository.revision_tree(revision_id)  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2563  | 
file_version = tree.inventory[file_id].revision  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2564  | 
annotate_file(branch, file_version, file_id, long, all, sys.stdout)  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
2565  | 
finally:  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2566  | 
branch.unlock()  | 
| 
1185.16.33
by Martin Pool
 - move 'conflict' and 'resolved' from shipped plugin to regular builtins  | 
2567  | 
|
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2568  | 
|
2569  | 
class cmd_re_sign(Command):  | 
|
2570  | 
"""Create a digital signature for an existing revision."""  | 
|
2571  | 
    # TODO be able to replace existing ones.
 | 
|
2572  | 
||
2573  | 
hidden = True # is this right ?  | 
|
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
2574  | 
takes_args = ['revision_id*']  | 
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2575  | 
takes_options = ['revision']  | 
2576  | 
||
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
2577  | 
def run(self, revision_id_list=None, revision=None):  | 
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2578  | 
import bzrlib.gpg as gpg  | 
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
2579  | 
if revision_id_list is not None and revision is not None:  | 
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2580  | 
raise BzrCommandError('You can only supply one of revision_id or --revision')  | 
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
2581  | 
if revision_id_list is None and revision is None:  | 
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2582  | 
raise BzrCommandError('You must supply either --revision or a revision_id')  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2583  | 
b = WorkingTree.open_containing(u'.')[0].branch  | 
| 
1770.2.9
by Aaron Bentley
 Add Branch.get_config, update BranchConfig() callers  | 
2584  | 
gpg_strategy = gpg.GPGStrategy(b.get_config())  | 
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
2585  | 
if revision_id_list is not None:  | 
2586  | 
for revision_id in revision_id_list:  | 
|
2587  | 
b.repository.sign_revision(revision_id, gpg_strategy)  | 
|
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2588  | 
elif revision is not None:  | 
| 
1483
by Robert Collins
 BUGFIX: re-sign should accept ranges  | 
2589  | 
if len(revision) == 1:  | 
2590  | 
revno, rev_id = revision[0].in_history(b)  | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
2591  | 
b.repository.sign_revision(rev_id, gpg_strategy)  | 
| 
1483
by Robert Collins
 BUGFIX: re-sign should accept ranges  | 
2592  | 
elif len(revision) == 2:  | 
2593  | 
                # are they both on rh- if so we can walk between them
 | 
|
2594  | 
                # might be nice to have a range helper for arbitrary
 | 
|
2595  | 
                # revision paths. hmm.
 | 
|
2596  | 
from_revno, from_revid = revision[0].in_history(b)  | 
|
2597  | 
to_revno, to_revid = revision[1].in_history(b)  | 
|
2598  | 
if to_revid is None:  | 
|
2599  | 
to_revno = b.revno()  | 
|
2600  | 
if from_revno is None or to_revno is None:  | 
|
2601  | 
raise BzrCommandError('Cannot sign a range of non-revision-history revisions')  | 
|
2602  | 
for revno in range(from_revno, to_revno + 1):  | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
2603  | 
b.repository.sign_revision(b.get_rev_id(revno),  | 
2604  | 
gpg_strategy)  | 
|
| 
1483
by Robert Collins
 BUGFIX: re-sign should accept ranges  | 
2605  | 
else:  | 
2606  | 
raise BzrCommandError('Please supply either one revision, or a range.')  | 
|
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2607  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
2608  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2609  | 
class cmd_bind(Command):  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
2610  | 
"""Bind the current branch to a master branch.  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2611  | 
|
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
2612  | 
    After binding, commits must succeed on the master branch
 | 
2613  | 
    before they are executed on the local one.
 | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2614  | 
    """
 | 
2615  | 
||
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
2616  | 
takes_args = ['location']  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2617  | 
takes_options = []  | 
2618  | 
||
2619  | 
def run(self, location=None):  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
2620  | 
b, relpath = Branch.open_containing(u'.')  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2621  | 
b_other = Branch.open(location)  | 
| 
1505.1.3
by John Arbash Meinel
 (broken) Adding more tests, and some functionality  | 
2622  | 
try:  | 
2623  | 
b.bind(b_other)  | 
|
2624  | 
except DivergedBranches:  | 
|
2625  | 
raise BzrCommandError('These branches have diverged.'  | 
|
| 
1505.1.12
by John Arbash Meinel
 Fixing up the error message for a failed bind.  | 
2626  | 
' Try merging, and then bind again.')  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2627  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
2628  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2629  | 
class cmd_unbind(Command):  | 
| 
1702.1.1
by Martin Pool
 (patch) Fix for unbind help text (olaf)  | 
2630  | 
"""Unbind the current branch from its master branch.  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2631  | 
|
2632  | 
    After unbinding, the local branch is considered independent.
 | 
|
| 
1702.1.1
by Martin Pool
 (patch) Fix for unbind help text (olaf)  | 
2633  | 
    All subsequent commits will be local.
 | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
2634  | 
    """
 | 
2635  | 
||
2636  | 
takes_args = []  | 
|
2637  | 
takes_options = []  | 
|
2638  | 
||
2639  | 
def run(self):  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
2640  | 
b, relpath = Branch.open_containing(u'.')  | 
2641  | 
if not b.unbind():  | 
|
2642  | 
raise BzrCommandError('Local branch is not bound')  | 
|
2643  | 
||
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
2644  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2645  | 
class cmd_uncommit(Command):  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2646  | 
"""Remove the last committed revision.  | 
2647  | 
||
2648  | 
    --verbose will print out what is being removed.
 | 
|
2649  | 
    --dry-run will go through all the motions, but not actually
 | 
|
2650  | 
    remove anything.
 | 
|
2651  | 
    
 | 
|
| 
1185.82.130
by Aaron Bentley
 Rename changesets to revision bundles  | 
2652  | 
    In the future, uncommit will create a revision bundle, which can then
 | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2653  | 
    be re-applied.
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
2654  | 
    """
 | 
| 
1185.62.11
by John Arbash Meinel
 Added TODO for bzr uncommit to remove unreferenced information.  | 
2655  | 
|
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
2656  | 
    # TODO: jam 20060108 Add an option to allow uncommit to remove
 | 
| 
1759.2.1
by Jelmer Vernooij
 Fix some types (found using aspell).  | 
2657  | 
    # unreferenced information in 'branch-as-repository' branches.
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
2658  | 
    # TODO: jam 20060108 Add the ability for uncommit to remove unreferenced
 | 
2659  | 
    # information in shared branches as well.
 | 
|
| 
1185.62.10
by John Arbash Meinel
 Removed --all from bzr uncommit, it was broken anyway.  | 
2660  | 
takes_options = ['verbose', 'revision',  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2661  | 
Option('dry-run', help='Don\'t actually make changes'),  | 
2662  | 
Option('force', help='Say yes to all questions.')]  | 
|
2663  | 
takes_args = ['location?']  | 
|
2664  | 
aliases = []  | 
|
2665  | 
||
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
2666  | 
def run(self, location=None,  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2667  | 
dry_run=False, verbose=False,  | 
2668  | 
revision=None, force=False):  | 
|
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
2669  | 
from bzrlib.log import log_formatter, show_log  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2670  | 
import sys  | 
2671  | 
from bzrlib.uncommit import uncommit  | 
|
2672  | 
||
2673  | 
if location is None:  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2674  | 
location = u'.'  | 
| 
1558.1.12
by Aaron Bentley
 Got uncommit working properly with checkouts  | 
2675  | 
control, relpath = bzrdir.BzrDir.open_containing(location)  | 
2676  | 
try:  | 
|
2677  | 
tree = control.open_workingtree()  | 
|
| 
1558.9.1
by Aaron Bentley
 Fix uncommit to handle bound branches, and to do locking  | 
2678  | 
b = tree.branch  | 
| 
1558.1.12
by Aaron Bentley
 Got uncommit working properly with checkouts  | 
2679  | 
except (errors.NoWorkingTree, errors.NotLocalUrl):  | 
2680  | 
tree = None  | 
|
| 
1558.9.1
by Aaron Bentley
 Fix uncommit to handle bound branches, and to do locking  | 
2681  | 
b = control.open_branch()  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2682  | 
|
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
2683  | 
rev_id = None  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2684  | 
if revision is None:  | 
2685  | 
revno = b.revno()  | 
|
2686  | 
else:  | 
|
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
2687  | 
            # 'bzr uncommit -r 10' actually means uncommit
 | 
2688  | 
            # so that the final tree is at revno 10.
 | 
|
2689  | 
            # but bzrlib.uncommit.uncommit() actually uncommits
 | 
|
2690  | 
            # the revisions that are supplied.
 | 
|
2691  | 
            # So we need to offset it by one
 | 
|
2692  | 
revno = revision[0].in_history(b).revno+1  | 
|
2693  | 
||
2694  | 
if revno <= b.revno():  | 
|
2695  | 
rev_id = b.get_rev_id(revno)  | 
|
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2696  | 
if rev_id is None:  | 
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
2697  | 
self.outf.write('No revisions to uncommit.\n')  | 
2698  | 
return 1  | 
|
2699  | 
||
2700  | 
lf = log_formatter('short',  | 
|
2701  | 
to_file=self.outf,  | 
|
2702  | 
show_timezone='original')  | 
|
2703  | 
||
2704  | 
show_log(b,  | 
|
2705  | 
lf,  | 
|
2706  | 
verbose=False,  | 
|
2707  | 
direction='forward',  | 
|
2708  | 
start_revision=revno,  | 
|
2709  | 
end_revision=b.revno())  | 
|
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2710  | 
|
2711  | 
if dry_run:  | 
|
2712  | 
print 'Dry-run, pretending to remove the above revisions.'  | 
|
2713  | 
if not force:  | 
|
2714  | 
val = raw_input('Press <enter> to continue')  | 
|
2715  | 
else:  | 
|
2716  | 
print 'The above revision(s) will be removed.'  | 
|
2717  | 
if not force:  | 
|
2718  | 
val = raw_input('Are you sure [y/N]? ')  | 
|
2719  | 
if val.lower() not in ('y', 'yes'):  | 
|
2720  | 
print 'Canceled'  | 
|
2721  | 
return 0  | 
|
2722  | 
||
| 
1558.1.12
by Aaron Bentley
 Got uncommit working properly with checkouts  | 
2723  | 
uncommit(b, tree=tree, dry_run=dry_run, verbose=verbose,  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
2724  | 
revno=revno)  | 
2725  | 
||
2726  | 
||
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
2727  | 
class cmd_break_lock(Command):  | 
2728  | 
"""Break a dead lock on a repository, branch or working directory.  | 
|
2729  | 
||
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
2730  | 
    CAUTION: Locks should only be broken when you are sure that the process
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
2731  | 
    holding the lock has been stopped.
 | 
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
2732  | 
|
2733  | 
    You can get information on what locks are open via the 'bzr info' command.
 | 
|
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
2734  | 
    
 | 
2735  | 
    example:
 | 
|
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
2736  | 
        bzr break-lock
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
2737  | 
    """
 | 
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
2738  | 
takes_args = ['location?']  | 
2739  | 
||
2740  | 
def run(self, location=None, show=False):  | 
|
2741  | 
if location is None:  | 
|
2742  | 
location = u'.'  | 
|
2743  | 
control, relpath = bzrdir.BzrDir.open_containing(location)  | 
|
| 
1687.1.17
by Robert Collins
 Test break lock on old format branches.  | 
2744  | 
try:  | 
2745  | 
control.break_lock()  | 
|
2746  | 
except NotImplementedError:  | 
|
2747  | 
            pass
 | 
|
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
2748  | 
|
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
2749  | 
|
2750  | 
||
2751  | 
# command-line interpretation helper for merge-related commands
 | 
|
| 
1545.2.9
by Aaron Bentley
 Moved merge.merge to builtins  | 
2752  | 
def merge(other_revision, base_revision,  | 
2753  | 
check_clean=True, ignore_zero=False,  | 
|
| 
1534.7.118
by Aaron Bentley
 Dirty merge of the mainline  | 
2754  | 
this_dir=None, backup_files=False, merge_type=Merge3Merger,  | 
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
2755  | 
file_list=None, show_base=False, reprocess=False,  | 
| 
1534.9.6
by Aaron Bentley
 Disable merge progress bars, except from the merge command  | 
2756  | 
pb=DummyProgress()):  | 
| 
1545.2.9
by Aaron Bentley
 Moved merge.merge to builtins  | 
2757  | 
"""Merge changes into a tree.  | 
2758  | 
||
2759  | 
    base_revision
 | 
|
2760  | 
        list(path, revno) Base for three-way merge.  
 | 
|
2761  | 
        If [None, None] then a base will be automatically determined.
 | 
|
2762  | 
    other_revision
 | 
|
2763  | 
        list(path, revno) Other revision for three-way merge.
 | 
|
2764  | 
    this_dir
 | 
|
2765  | 
        Directory to merge changes into; '.' by default.
 | 
|
2766  | 
    check_clean
 | 
|
2767  | 
        If true, this_dir must have no uncommitted changes before the
 | 
|
2768  | 
        merge begins.
 | 
|
2769  | 
    ignore_zero - If true, suppress the "zero conflicts" message when 
 | 
|
2770  | 
        there are no conflicts; should be set when doing something we expect
 | 
|
2771  | 
        to complete perfectly.
 | 
|
2772  | 
    file_list - If supplied, merge only changes to selected files.
 | 
|
2773  | 
||
2774  | 
    All available ancestors of other_revision and base_revision are
 | 
|
2775  | 
    automatically pulled into the branch.
 | 
|
2776  | 
||
2777  | 
    The revno may be -1 to indicate the last revision on the branch, which is
 | 
|
2778  | 
    the typical case.
 | 
|
2779  | 
||
2780  | 
    This function is intended for use from the command line; programmatic
 | 
|
2781  | 
    clients might prefer to call merge.merge_inner(), which has less magic 
 | 
|
2782  | 
    behavior.
 | 
|
2783  | 
    """
 | 
|
| 
1534.7.129
by Aaron Bentley
 Converted test cases to Tree Transform  | 
2784  | 
from bzrlib.merge import Merger  | 
| 
1545.2.9
by Aaron Bentley
 Moved merge.merge to builtins  | 
2785  | 
if this_dir is None:  | 
2786  | 
this_dir = u'.'  | 
|
| 
1534.4.28
by Robert Collins
 first cut at merge from integration.  | 
2787  | 
this_tree = WorkingTree.open_containing(this_dir)[0]  | 
| 
1534.7.118
by Aaron Bentley
 Dirty merge of the mainline  | 
2788  | 
if show_base and not merge_type is Merge3Merger:  | 
| 
1545.2.9
by Aaron Bentley
 Moved merge.merge to builtins  | 
2789  | 
raise BzrCommandError("Show-base is not supported for this merge"  | 
2790  | 
" type. %s" % merge_type)  | 
|
| 
1551.6.8
by Aaron Bentley
 Implemented reprocess for weave  | 
2791  | 
if reprocess and not merge_type.supports_reprocess:  | 
| 
1551.6.14
by Aaron Bentley
 Tweaks from merge review  | 
2792  | 
raise BzrCommandError("Conflict reduction is not supported for merge"  | 
2793  | 
" type %s." % merge_type)  | 
|
| 
1545.2.9
by Aaron Bentley
 Moved merge.merge to builtins  | 
2794  | 
if reprocess and show_base:  | 
| 
1551.6.14
by Aaron Bentley
 Tweaks from merge review  | 
2795  | 
raise BzrCommandError("Cannot do conflict reduction and show base.")  | 
| 
1551.2.32
by Aaron Bentley
 Handle progress phases more nicely in merge  | 
2796  | 
try:  | 
2797  | 
merger = Merger(this_tree.branch, this_tree=this_tree, pb=pb)  | 
|
2798  | 
merger.pp = ProgressPhase("Merge phase", 5, pb)  | 
|
2799  | 
merger.pp.next_phase()  | 
|
2800  | 
merger.check_basis(check_clean)  | 
|
2801  | 
merger.set_other(other_revision)  | 
|
2802  | 
merger.pp.next_phase()  | 
|
2803  | 
merger.set_base(base_revision)  | 
|
2804  | 
if merger.base_rev_id == merger.other_rev_id:  | 
|
2805  | 
note('Nothing to do.')  | 
|
2806  | 
return 0  | 
|
2807  | 
merger.backup_files = backup_files  | 
|
2808  | 
merger.merge_type = merge_type  | 
|
2809  | 
merger.set_interesting_files(file_list)  | 
|
2810  | 
merger.show_base = show_base  | 
|
2811  | 
merger.reprocess = reprocess  | 
|
2812  | 
conflicts = merger.do_merge()  | 
|
| 
1645.1.1
by Aaron Bentley
 Implement single-file merge  | 
2813  | 
if file_list is None:  | 
2814  | 
merger.set_pending()  | 
|
| 
1551.2.32
by Aaron Bentley
 Handle progress phases more nicely in merge  | 
2815  | 
finally:  | 
2816  | 
pb.clear()  | 
|
| 
1545.2.9
by Aaron Bentley
 Moved merge.merge to builtins  | 
2817  | 
return conflicts  | 
2818  | 
||
2819  | 
||
| 
1185.16.33
by Martin Pool
 - move 'conflict' and 'resolved' from shipped plugin to regular builtins  | 
2820  | 
# these get imported and then picked up by the scan for cmd_*
 | 
2821  | 
# TODO: Some more consistent way to split command definitions across files;
 | 
|
2822  | 
# we do need to load at least some information about them to know of 
 | 
|
| 
1616.1.7
by Martin Pool
 New developer commands 'weave-list' and 'weave-join'.  | 
2823  | 
# aliases.  ideally we would avoid loading the implementation until the
 | 
2824  | 
# details were needed.
 | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
2825  | 
from bzrlib.conflicts import cmd_resolve, cmd_conflicts, restore  | 
| 
1185.82.130
by Aaron Bentley
 Rename changesets to revision bundles  | 
2826  | 
from bzrlib.bundle.commands import cmd_bundle_revisions  | 
| 
1185.78.6
by John Arbash Meinel
 Adding sign-my-commits as a builtin, along with some simple tests.  | 
2827  | 
from bzrlib.sign_my_commits import cmd_sign_my_commits  | 
| 
1616.1.17
by Martin Pool
 New 'weave-plan-merge' and 'weave-merge-text' commands lifted from weave.py  | 
2828  | 
from bzrlib.weave_commands import cmd_weave_list, cmd_weave_join, \  | 
2829  | 
cmd_weave_plan_merge, cmd_weave_merge_text  |