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