bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
3955.1.5
by Jonathan Lange
 NEWS update and copyright update.  | 
1  | 
# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 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
 | 
|
| 
4183.7.1
by Sabin Iacob
 update FSF mailing address  | 
15  | 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
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
 | 
| 
3224.5.1
by Andrew Bennetts
 Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.  | 
24  | 
import cStringIO
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
25  | 
import sys
 | 
| 
1551.12.8
by Aaron Bentley
 Add merge-directive command  | 
26  | 
import time
 | 
| 
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 (
 | 
| 
2376.4.22
by Jonathan Lange
 Variety of whitespace cleanups, tightening of tests and docstring changes in  | 
30  | 
    bugtracker,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
31  | 
    bundle,
 | 
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
32  | 
    btree_index,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
33  | 
    bzrdir,
 | 
| 
2225.1.1
by Aaron Bentley
 Added revert change display, with tests  | 
34  | 
    delta,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
35  | 
    config,
 | 
36  | 
    errors,
 | 
|
| 
2298.8.1
by Kent Gibson
 Normalise ignore patterns to use '/' path separator.  | 
37  | 
    globbing,
 | 
| 
4119.3.2
by Robert Collins
 Migrate existing hooks over to the new HookPoint infrastructure.  | 
38  | 
    hooks,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
39  | 
    log,
 | 
| 
1996.3.5
by John Arbash Meinel
 Cleanup, deprecated, and get the tests passing again.  | 
40  | 
    merge as _mod_merge,
 | 
| 
1551.12.8
by Aaron Bentley
 Add merge-directive command  | 
41  | 
    merge_directive,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
42  | 
    osutils,
 | 
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
43  | 
    reconfigure,
 | 
| 
3193.8.18
by Aaron Bentley
 Move all rename-guessing into RenameMap  | 
44  | 
    rename_map,
 | 
| 
2598.5.1
by Aaron Bentley
 Start eliminating the use of None to indicate null revision  | 
45  | 
    revision as _mod_revision,
 | 
| 
2204.5.5
by Aaron Bentley
 Remove RepositoryFormat.set_default_format, deprecate get_format_type  | 
46  | 
    symbol_versioning,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
47  | 
    transport,
 | 
| 
1996.3.30
by John Arbash Meinel
 Don't import 'bzrlib.tree' directly in bzrlib.builtins  | 
48  | 
    tree as _mod_tree,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
49  | 
    ui,
 | 
50  | 
    urlutils,
 | 
|
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
51  | 
    views,
 | 
| 
1836.1.26
by John Arbash Meinel
 [merge] bzr.dev 1869  | 
52  | 
    )
 | 
| 
1996.3.1
by John Arbash Meinel
 Demandloading builtins.py drops our load time from 350ms to 291ms  | 
53  | 
from bzrlib.branch import Branch
 | 
| 
2120.7.2
by Aaron Bentley
 Move autoresolve functionality to workingtree  | 
54  | 
from bzrlib.conflicts import ConflictList
 | 
| 
3936.3.40
by Ian Clatworthy
 review feedback from jam  | 
55  | 
from bzrlib.revisionspec import RevisionSpec, RevisionInfo
 | 
| 
2535.2.1
by Adeodato Simó
 New SMTPConnection class, a reduced version of that in bzr-email.  | 
56  | 
from bzrlib.smtp_connection import SMTPConnection
 | 
| 
1996.3.1
by John Arbash Meinel
 Demandloading builtins.py drops our load time from 350ms to 291ms  | 
57  | 
from bzrlib.workingtree import WorkingTree
 | 
58  | 
""")  | 
|
59  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
60  | 
from bzrlib.commands import Command, display_command  | 
| 
3921.3.9
by Marius Kruger
 * add some blackbox tests and another whitebox test  | 
61  | 
from bzrlib.option import (  | 
62  | 
ListOption,  | 
|
63  | 
Option,  | 
|
64  | 
RegistryOption,  | 
|
65  | 
custom_help,  | 
|
66  | 
_parse_revision_str,  | 
|
67  | 
    )
 | 
|
| 
3874.1.4
by Vincent Ladeuil
 Fixed as per Aarons' comment.  | 
68  | 
from bzrlib.trace import mutter, note, warning, is_quiet, get_verbosity_level  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
69  | 
|
70  | 
||
| 
3586.1.32
by Ian Clatworthy
 merge bzr.dev r3998  | 
71  | 
def tree_files(file_list, default_branch=u'.', canonicalize=True,  | 
72  | 
apply_view=True):  | 
|
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
73  | 
try:  | 
| 
3586.1.32
by Ian Clatworthy
 merge bzr.dev r3998  | 
74  | 
return internal_tree_files(file_list, default_branch, canonicalize,  | 
75  | 
apply_view)  | 
|
| 
1996.3.34
by John Arbash Meinel
 Update builtins to use errors.foo. Now errors can be avoided entirely for a bzr rocks run  | 
76  | 
except errors.FileInWrongBranch, e:  | 
77  | 
raise errors.BzrCommandError("%s is not in the same branch as %s" %  | 
|
78  | 
(e.path, file_list[0]))  | 
|
| 
1185.35.28
by Aaron Bentley
 Support diff with two branches as input.  | 
79  | 
|
| 
1185.85.12
by John Arbash Meinel
 Refactoring AddAction to allow redirecting to an encoding file.  | 
80  | 
|
| 
3586.1.34
by Ian Clatworthy
 fix tree/path handling for add  | 
81  | 
def tree_files_for_add(file_list):  | 
82  | 
"""Add handles files a bit differently so it a custom implementation."""  | 
|
83  | 
if file_list:  | 
|
84  | 
tree = WorkingTree.open_containing(file_list[0])[0]  | 
|
85  | 
if tree.supports_views():  | 
|
86  | 
view_files = tree.views.lookup_view()  | 
|
| 
4163.2.1
by Ian Clatworthy
 Fix add in trees supports views  | 
87  | 
if view_files:  | 
88  | 
for filename in file_list:  | 
|
89  | 
if not osutils.is_inside_any(view_files, filename):  | 
|
90  | 
raise errors.FileOutsideView(filename, view_files)  | 
|
| 
3586.1.34
by Ian Clatworthy
 fix tree/path handling for add  | 
91  | 
else:  | 
92  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
|
93  | 
if tree.supports_views():  | 
|
94  | 
view_files = tree.views.lookup_view()  | 
|
95  | 
if view_files:  | 
|
96  | 
file_list = view_files  | 
|
97  | 
view_str = views.view_display_str(view_files)  | 
|
| 
4210.1.1
by Ian Clatworthy
 reword 'ignoring files outside view' message  | 
98  | 
note("Ignoring files outside view. View is %s" % view_str)  | 
| 
3586.1.34
by Ian Clatworthy
 fix tree/path handling for add  | 
99  | 
return tree, file_list  | 
100  | 
||
101  | 
||
| 
3984.3.5
by Daniel Watkins
 Changed from option type to helper function.  | 
102  | 
def _get_one_revision(command_name, revisions):  | 
103  | 
if revisions is None:  | 
|
104  | 
return None  | 
|
105  | 
if len(revisions) != 1:  | 
|
106  | 
raise errors.BzrCommandError(  | 
|
107  | 
'bzr %s --revision takes exactly one revision identifier' % (  | 
|
108  | 
command_name,))  | 
|
109  | 
return revisions[0]  | 
|
110  | 
||
111  | 
||
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
112  | 
def _get_one_revision_tree(command_name, revisions, branch=None, tree=None):  | 
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
113  | 
if branch is None:  | 
114  | 
branch = tree.branch  | 
|
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
115  | 
if revisions is None:  | 
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
116  | 
if tree is not None:  | 
117  | 
rev_tree = tree.basis_tree()  | 
|
118  | 
else:  | 
|
119  | 
rev_tree = branch.basis_tree()  | 
|
120  | 
else:  | 
|
| 
3984.3.5
by Daniel Watkins
 Changed from option type to helper function.  | 
121  | 
revision = _get_one_revision(command_name, revisions)  | 
122  | 
rev_tree = revision.as_tree(branch)  | 
|
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
123  | 
return rev_tree  | 
124  | 
||
125  | 
||
| 
1658.1.9
by Martin Pool
 Give an error for bzr diff on an nonexistent file (Malone #3619)  | 
126  | 
# XXX: Bad function name; should possibly also be a class method of
 | 
127  | 
# WorkingTree rather than a function.
 | 
|
| 
3586.1.32
by Ian Clatworthy
 merge bzr.dev r3998  | 
128  | 
def internal_tree_files(file_list, default_branch=u'.', canonicalize=True,  | 
129  | 
apply_view=True):  | 
|
| 
1658.1.8
by Martin Pool
 (internal_tree_files) Better docstring  | 
130  | 
"""Convert command-line paths to a WorkingTree and relative paths.  | 
131  | 
||
132  | 
    This is typically used for command-line processors that take one or
 | 
|
133  | 
    more filenames, and infer the workingtree that contains them.
 | 
|
134  | 
||
135  | 
    The filenames given are not required to exist.
 | 
|
136  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
137  | 
    :param file_list: Filenames to convert.
 | 
| 
1658.1.8
by Martin Pool
 (internal_tree_files) Better docstring  | 
138  | 
|
| 
2091.3.2
by Aaron Bentley
 Traverse non-terminal symlinks for mv et al  | 
139  | 
    :param default_branch: Fallback tree path to use if file_list is empty or
 | 
140  | 
        None.
 | 
|
| 
1658.1.8
by Martin Pool
 (internal_tree_files) Better docstring  | 
141  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
142  | 
    :param apply_view: if True and a view is set, apply it or check that
 | 
143  | 
        specified files are within it
 | 
|
144  | 
||
| 
1658.1.8
by Martin Pool
 (internal_tree_files) Better docstring  | 
145  | 
    :return: workingtree, [relative_paths]
 | 
| 
1185.12.101
by Aaron Bentley
 Made commit take branch from first argument, if supplied.  | 
146  | 
    """
 | 
147  | 
if file_list is None or len(file_list) == 0:  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
148  | 
tree = WorkingTree.open_containing(default_branch)[0]  | 
149  | 
if tree.supports_views() and apply_view:  | 
|
150  | 
view_files = tree.views.lookup_view()  | 
|
151  | 
if view_files:  | 
|
152  | 
file_list = view_files  | 
|
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
153  | 
view_str = views.view_display_str(view_files)  | 
| 
4210.1.1
by Ian Clatworthy
 reword 'ignoring files outside view' message  | 
154  | 
note("Ignoring files outside view. View is %s" % view_str)  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
155  | 
return tree, file_list  | 
| 
2091.3.5
by Aaron Bentley
 Move realpath functionality into osutils  | 
156  | 
tree = WorkingTree.open_containing(osutils.realpath(file_list[0]))[0]  | 
| 
3586.1.32
by Ian Clatworthy
 merge bzr.dev r3998  | 
157  | 
return tree, safe_relpath_files(tree, file_list, canonicalize,  | 
158  | 
apply_view=apply_view)  | 
|
159  | 
||
160  | 
||
161  | 
def safe_relpath_files(tree, file_list, canonicalize=True, apply_view=True):  | 
|
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
162  | 
"""Convert file_list into a list of relpaths in tree.  | 
163  | 
||
164  | 
    :param tree: A tree to operate on.
 | 
|
165  | 
    :param file_list: A list of user provided paths or None.
 | 
|
| 
3586.1.18
by Ian Clatworthy
 merge bzr.dev r3606  | 
166  | 
    :param apply_view: if True and a view is set, apply it or check that
 | 
167  | 
        specified files are within it
 | 
|
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
168  | 
    :return: A list of relative paths.
 | 
169  | 
    :raises errors.PathNotChild: When a provided path is in a different tree
 | 
|
170  | 
        than tree.
 | 
|
171  | 
    """
 | 
|
172  | 
if file_list is None:  | 
|
173  | 
return None  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
174  | 
if tree.supports_views() and apply_view:  | 
175  | 
view_files = tree.views.lookup_view()  | 
|
176  | 
else:  | 
|
177  | 
view_files = []  | 
|
| 
1185.12.101
by Aaron Bentley
 Made commit take branch from first argument, if supplied.  | 
178  | 
new_list = []  | 
| 
3794.5.37
by Mark Hammond
 Canonicalization is now done via a param to file_list.  | 
179  | 
    # tree.relpath exists as a "thunk" to osutils, but canonical_relpath
 | 
180  | 
    # doesn't - fix that up here before we enter the loop.
 | 
|
181  | 
if canonicalize:  | 
|
182  | 
fixer = lambda p: osutils.canonical_relpath(tree.basedir, p)  | 
|
183  | 
else:  | 
|
184  | 
fixer = tree.relpath  | 
|
| 
1185.12.101
by Aaron Bentley
 Made commit take branch from first argument, if supplied.  | 
185  | 
for filename in file_list:  | 
| 
1185.35.32
by Aaron Bentley
 Fixed handling of files in mixed branches  | 
186  | 
try:  | 
| 
3586.1.32
by Ian Clatworthy
 merge bzr.dev r3998  | 
187  | 
relpath = fixer(osutils.dereference_path(filename))  | 
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
188  | 
if view_files and not osutils.is_inside_any(view_files, relpath):  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
189  | 
raise errors.FileOutsideView(filename, view_files)  | 
190  | 
new_list.append(relpath)  | 
|
| 
1185.31.45
by John Arbash Meinel
 Refactoring Exceptions found some places where the wrong exception was caught.  | 
191  | 
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  | 
192  | 
raise errors.FileInWrongBranch(tree.branch, filename)  | 
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
193  | 
return new_list  | 
| 
1553.5.78
by Martin Pool
 New bzr init --format option and test  | 
194  | 
|
195  | 
||
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
196  | 
def _get_view_info_for_change_reporter(tree):  | 
197  | 
"""Get the view information from a tree for change reporting."""  | 
|
198  | 
view_info = None  | 
|
199  | 
try:  | 
|
200  | 
current_view = tree.views.get_view_info()[0]  | 
|
201  | 
if current_view is not None:  | 
|
202  | 
view_info = (current_view, tree.views.lookup_view())  | 
|
203  | 
except errors.ViewsNotSupported:  | 
|
204  | 
        pass
 | 
|
205  | 
return view_info  | 
|
206  | 
||
207  | 
||
| 
1185.16.112
by mbp at sourcefrog
 todo  | 
208  | 
# TODO: Make sure no commands unconditionally use the working directory as a
 | 
209  | 
# branch.  If a filename argument is used, the first of them should be used to
 | 
|
210  | 
# specify the branch.  (Perhaps this can be factored out into some kind of
 | 
|
211  | 
# Argument class, representing a file in a branch, where the first occurrence
 | 
|
212  | 
# opens the branch?)
 | 
|
213  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
214  | 
class cmd_status(Command):  | 
215  | 
"""Display status summary.  | 
|
216  | 
||
217  | 
    This reports on versioned and unknown files, reporting them
 | 
|
218  | 
    grouped by state.  Possible states are:
 | 
|
219  | 
||
| 
1551.10.10
by Aaron Bentley
 Add help text  | 
220  | 
    added
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
221  | 
        Versioned in the working copy but not in the previous revision.
 | 
222  | 
||
| 
1551.10.10
by Aaron Bentley
 Add help text  | 
223  | 
    removed
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
224  | 
        Versioned in the previous revision but removed or deleted
 | 
225  | 
        in the working copy.
 | 
|
226  | 
||
| 
1551.10.10
by Aaron Bentley
 Add help text  | 
227  | 
    renamed
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
228  | 
        Path of this file changed from the previous revision;
 | 
229  | 
        the text may also have changed.  This includes files whose
 | 
|
230  | 
        parent directory was renamed.
 | 
|
231  | 
||
| 
1551.10.10
by Aaron Bentley
 Add help text  | 
232  | 
    modified
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
233  | 
        Text has changed since the previous revision.
 | 
234  | 
||
| 
1551.10.10
by Aaron Bentley
 Add help text  | 
235  | 
    kind changed
 | 
236  | 
        File kind has been changed (e.g. from file to directory).
 | 
|
237  | 
||
238  | 
    unknown
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
239  | 
        Not versioned and not matching an ignore pattern.
 | 
240  | 
||
| 
2374.1.1
by Ian Clatworthy
 Help and man page fixes  | 
241  | 
    To see ignored files use 'bzr ignored'.  For details on the
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
242  | 
    changes to file texts, use 'bzr diff'.
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
243  | 
|
| 
2792.1.1
by Ian Clatworthy
 Add short options to status to assist migrating svn users (Daniel Watkins)  | 
244  | 
    Note that --short or -S gives status flags for each item, similar
 | 
245  | 
    to Subversion's status command. To get output similar to svn -q,
 | 
|
| 
3504.3.1
by Andrew Bennetts
 Fix trivial bug in 'bzr help status' reported by mlh on #bzr.  | 
246  | 
    use bzr status -SV.
 | 
| 
1551.10.10
by Aaron Bentley
 Add help text  | 
247  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
248  | 
    If no arguments are specified, the status of the entire working
 | 
249  | 
    directory is shown.  Otherwise, only the status of the specified
 | 
|
250  | 
    files or directories is reported.  If a directory is given, status
 | 
|
251  | 
    is reported for everything inside that directory.
 | 
|
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
252  | 
|
| 
3936.2.2
by Ian Clatworthy
 add NEWS item & improve status help  | 
253  | 
    Before merges are committed, the pending merge tip revisions are
 | 
254  | 
    shown. To see all pending merge revisions, use the -v option.
 | 
|
255  | 
    To skip the display of pending merge information altogether, use
 | 
|
256  | 
    the no-pending option or specify a file/directory.
 | 
|
257  | 
||
| 
1185.1.35
by Robert Collins
 Heikki Paajanen's status -r patch  | 
258  | 
    If a revision argument is given, the status is calculated against
 | 
259  | 
    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  | 
260  | 
    """
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
261  | 
|
| 
1185.16.76
by Martin Pool
 doc  | 
262  | 
    # TODO: --no-recurse, --recurse options
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
263  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
264  | 
takes_args = ['file*']  | 
| 
3936.2.1
by Ian Clatworthy
 verbose flag for status - code & tests  | 
265  | 
takes_options = ['show-ids', 'revision', 'change', 'verbose',  | 
| 
2792.1.1
by Ian Clatworthy
 Add short options to status to assist migrating svn users (Daniel Watkins)  | 
266  | 
Option('short', help='Use short status indicators.',  | 
| 
2663.1.7
by Daniel Watkins
 Capitalised short names.  | 
267  | 
short_name='S'),  | 
| 
2663.1.5
by Daniel Watkins
 Changed 'bzr stat --quiet' to 'bzr stat -(vs|sv)', as per list suggestions.  | 
268  | 
Option('versioned', help='Only show versioned files.',  | 
| 
3270.6.1
by James Westby
 Add --no-pending to status to not show the pending merges. (#202830)  | 
269  | 
short_name='V'),  | 
270  | 
Option('no-pending', help='Don\'t show pending merges.',  | 
|
271  | 
                           ),
 | 
|
| 
2663.1.5
by Daniel Watkins
 Changed 'bzr stat --quiet' to 'bzr stat -(vs|sv)', as per list suggestions.  | 
272  | 
                     ]
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
273  | 
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()  | 
274  | 
|
275  | 
encoding_type = 'replace'  | 
|
| 
2520.1.3
by Daniel Watkins
 'help status' now points to 'help status-flags'.  | 
276  | 
_see_also = ['diff', 'revert', 'status-flags']  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
277  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
278  | 
    @display_command
 | 
| 
2318.2.1
by Kent Gibson
 Apply status versioned patch  | 
279  | 
def run(self, show_ids=False, file_list=None, revision=None, short=False,  | 
| 
3936.2.1
by Ian Clatworthy
 verbose flag for status - code & tests  | 
280  | 
versioned=False, no_pending=False, verbose=False):  | 
| 
1551.2.9
by Aaron Bentley
 Fix status to work with checkouts  | 
281  | 
from bzrlib.status import show_tree_status  | 
| 
1185.85.15
by John Arbash Meinel
 Updated bzr status, adding test_cat  | 
282  | 
|
| 
2745.4.2
by Lukáš Lalinsky
 Allow options to be stored in attributes that differ from their 'name' and use this to let '--change' and '--revision' to override each other.  | 
283  | 
if revision and len(revision) > 2:  | 
284  | 
raise errors.BzrCommandError('bzr status --revision takes exactly'  | 
|
285  | 
' one or two revision specifiers')  | 
|
| 
2745.4.1
by Lukáš Lalinsky
 New option -C/--change for diff and status to show changes in one revision. (#56299)  | 
286  | 
|
| 
3636.1.1
by Robert Collins
 Stop passing specific_file lists to show_tree_status when the specific  | 
287  | 
tree, relfile_list = tree_files(file_list)  | 
288  | 
        # Avoid asking for specific files when that is not needed.
 | 
|
289  | 
if relfile_list == ['']:  | 
|
290  | 
relfile_list = None  | 
|
291  | 
            # Don't disable pending merges for full trees other than '.'.
 | 
|
292  | 
if file_list == ['.']:  | 
|
293  | 
no_pending = True  | 
|
294  | 
        # A specific path within a tree was given.
 | 
|
295  | 
elif relfile_list is not None:  | 
|
296  | 
no_pending = True  | 
|
| 
1773.1.2
by Robert Collins
 Remove --all option from status.  | 
297  | 
show_tree_status(tree, show_ids=show_ids,  | 
| 
3636.1.1
by Robert Collins
 Stop passing specific_file lists to show_tree_status when the specific  | 
298  | 
specific_files=relfile_list, revision=revision,  | 
| 
3270.6.1
by James Westby
 Add --no-pending to status to not show the pending merges. (#202830)  | 
299  | 
to_file=self.outf, short=short, versioned=versioned,  | 
| 
3936.2.1
by Ian Clatworthy
 verbose flag for status - code & tests  | 
300  | 
show_pending=(not no_pending), verbose=verbose)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
301  | 
|
302  | 
||
303  | 
class cmd_cat_revision(Command):  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
304  | 
"""Write out metadata for a revision.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
305  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
306  | 
    The revision to print can either be specified by a specific
 | 
307  | 
    revision identifier, or you can use --revision.
 | 
|
308  | 
    """
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
309  | 
|
310  | 
hidden = True  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
311  | 
takes_args = ['revision_id?']  | 
312  | 
takes_options = ['revision']  | 
|
| 
1685.1.76
by Wouter van Heyst
 codecleanup  | 
313  | 
    # cat-revision is more for frontends so should be exact
 | 
314  | 
encoding = 'strict'  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
315  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
316  | 
    @display_command
 | 
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
317  | 
def run(self, revision_id=None, revision=None):  | 
318  | 
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  | 
319  | 
raise errors.BzrCommandError('You can only supply one of'  | 
320  | 
' revision_id or --revision')  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
321  | 
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  | 
322  | 
raise errors.BzrCommandError('You must supply either'  | 
323  | 
' --revision or a revision_id')  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
324  | 
b = WorkingTree.open_containing(u'.')[0].branch  | 
| 
1185.85.72
by John Arbash Meinel
 Fix some of the tests.  | 
325  | 
|
326  | 
        # TODO: jam 20060112 should cat-revision always output utf-8?
 | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
327  | 
if revision_id is not None:  | 
| 
2858.2.1
by Martin Pool
 Remove most calls to safe_file_id and safe_revision_id.  | 
328  | 
revision_id = osutils.safe_revision_id(revision_id, warn=False)  | 
| 
3668.4.1
by Jelmer Vernooij
 Show proper error rather than traceback when an unknown revision id is specified to bzr cat-revision.  | 
329  | 
try:  | 
330  | 
self.outf.write(b.repository.get_revision_xml(revision_id).decode('utf-8'))  | 
|
331  | 
except errors.NoSuchRevision:  | 
|
332  | 
msg = "The repository %s contains no revision %s." % (b.repository.base,  | 
|
333  | 
revision_id)  | 
|
334  | 
raise errors.BzrCommandError(msg)  | 
|
| 
1185.5.3
by John Arbash Meinel
 cat-revision allows --revision for easier investigation.  | 
335  | 
elif revision is not None:  | 
336  | 
for rev in revision:  | 
|
337  | 
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  | 
338  | 
raise errors.BzrCommandError('You cannot specify a NULL'  | 
339  | 
' revision.')  | 
|
| 
3298.2.14
by Aaron Bentley
 Optimize revision-info and cat-revision  | 
340  | 
rev_id = rev.as_revision_id(b)  | 
| 
1185.85.78
by John Arbash Meinel
 [merge] jam-integration 1512, includes Storage changes.  | 
341  | 
self.outf.write(b.repository.get_revision_xml(rev_id).decode('utf-8'))  | 
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
342  | 
|
343  | 
||
344  | 
class cmd_dump_btree(Command):  | 
|
| 
3770.1.4
by John Arbash Meinel
 Clarify the help text a bit.  | 
345  | 
"""Dump the contents of a btree index file to stdout.  | 
346  | 
||
347  | 
    PATH is a btree index file, it can be any URL. This includes things like
 | 
|
348  | 
    .bzr/repository/pack-names, or .bzr/repository/indices/a34b3a...ca4a4.iix
 | 
|
349  | 
||
350  | 
    By default, the tuples stored in the index file will be displayed. With
 | 
|
351  | 
    --raw, we will uncompress the pages, but otherwise display the raw bytes
 | 
|
352  | 
    stored in the index.
 | 
|
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
353  | 
    """
 | 
354  | 
||
355  | 
    # TODO: Do we want to dump the internal nodes as well?
 | 
|
356  | 
    # TODO: It would be nice to be able to dump the un-parsed information,
 | 
|
357  | 
    #       rather than only going through iter_all_entries. However, this is
 | 
|
358  | 
    #       good enough for a start
 | 
|
359  | 
hidden = True  | 
|
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
360  | 
encoding_type = 'exact'  | 
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
361  | 
takes_args = ['path']  | 
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
362  | 
takes_options = [Option('raw', help='Write the uncompressed bytes out,'  | 
| 
3770.1.5
by John Arbash Meinel
 Add a trailing period for the option '--raw'  | 
363  | 
' rather than the parsed tuples.'),  | 
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
364  | 
                    ]
 | 
365  | 
||
366  | 
def run(self, path, raw=False):  | 
|
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
367  | 
dirname, basename = osutils.split(path)  | 
368  | 
t = transport.get_transport(dirname)  | 
|
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
369  | 
if raw:  | 
370  | 
self._dump_raw_bytes(t, basename)  | 
|
371  | 
else:  | 
|
372  | 
self._dump_entries(t, basename)  | 
|
373  | 
||
374  | 
def _get_index_and_bytes(self, trans, basename):  | 
|
375  | 
"""Create a BTreeGraphIndex and raw bytes."""  | 
|
376  | 
bt = btree_index.BTreeGraphIndex(trans, basename, None)  | 
|
377  | 
bytes = trans.get_bytes(basename)  | 
|
378  | 
bt._file = cStringIO.StringIO(bytes)  | 
|
379  | 
bt._size = len(bytes)  | 
|
380  | 
return bt, bytes  | 
|
381  | 
||
382  | 
def _dump_raw_bytes(self, trans, basename):  | 
|
383  | 
import zlib  | 
|
384  | 
||
385  | 
        # We need to parse at least the root node.
 | 
|
386  | 
        # This is because the first page of every row starts with an
 | 
|
387  | 
        # uncompressed header.
 | 
|
388  | 
bt, bytes = self._get_index_and_bytes(trans, basename)  | 
|
| 
3770.1.3
by John Arbash Meinel
 Simplify the --raw mode.  | 
389  | 
for page_idx, page_start in enumerate(xrange(0, len(bytes),  | 
390  | 
btree_index._PAGE_SIZE)):  | 
|
391  | 
page_end = min(page_start + btree_index._PAGE_SIZE, len(bytes))  | 
|
392  | 
page_bytes = bytes[page_start:page_end]  | 
|
393  | 
if page_idx == 0:  | 
|
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
394  | 
self.outf.write('Root node:\n')  | 
| 
3770.1.3
by John Arbash Meinel
 Simplify the --raw mode.  | 
395  | 
header_end, data = bt._parse_header_from_bytes(page_bytes)  | 
396  | 
self.outf.write(page_bytes[:header_end])  | 
|
397  | 
page_bytes = data  | 
|
398  | 
self.outf.write('\nPage %d\n' % (page_idx,))  | 
|
399  | 
decomp_bytes = zlib.decompress(page_bytes)  | 
|
400  | 
self.outf.write(decomp_bytes)  | 
|
401  | 
self.outf.write('\n')  | 
|
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
402  | 
|
403  | 
def _dump_entries(self, trans, basename):  | 
|
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
404  | 
try:  | 
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
405  | 
st = trans.stat(basename)  | 
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
406  | 
except errors.TransportNotPossible:  | 
407  | 
            # We can't stat, so we'll fake it because we have to do the 'get()'
 | 
|
408  | 
            # anyway.
 | 
|
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
409  | 
bt, _ = self._get_index_and_bytes(trans, basename)  | 
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
410  | 
else:  | 
| 
3770.1.2
by John Arbash Meinel
 Add a --raw output for dump-btree.  | 
411  | 
bt = btree_index.BTreeGraphIndex(trans, basename, st.st_size)  | 
| 
3770.1.1
by John Arbash Meinel
 First draft of a basic dump-btree command.  | 
412  | 
for node in bt.iter_all_entries():  | 
413  | 
            # Node is made up of:
 | 
|
414  | 
            # (index, key, value, [references])
 | 
|
415  | 
self.outf.write('%s\n' % (node[1:],))  | 
|
416  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
417  | 
|
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
418  | 
class cmd_remove_tree(Command):  | 
419  | 
"""Remove the working tree from a given branch/checkout.  | 
|
420  | 
||
421  | 
    Since a lightweight checkout is little more than a working tree
 | 
|
422  | 
    this will refuse to run against one.
 | 
|
| 
2374.1.3
by Ian Clatworthy
 Minor man page fixes for add, commit, export  | 
423  | 
|
| 
2374.1.4
by Ian Clatworthy
 Include feedback from mailing list.  | 
424  | 
    To re-create the working tree, use "bzr checkout".
 | 
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
425  | 
    """
 | 
| 
2485.1.2
by James Westby
 Update with comments from review, thanks to John and Aaron.  | 
426  | 
_see_also = ['checkout', 'working-trees']  | 
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
427  | 
takes_args = ['location?']  | 
| 
3667.2.1
by Lukáš Lalinský
 Make `bzr remove-tree` not remove trees with uncommitted changes by default  | 
428  | 
takes_options = [  | 
429  | 
Option('force',  | 
|
430  | 
help='Remove the working tree even if it has '  | 
|
431  | 
'uncommitted changes.'),  | 
|
432  | 
        ]
 | 
|
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
433  | 
|
| 
3667.2.1
by Lukáš Lalinský
 Make `bzr remove-tree` not remove trees with uncommitted changes by default  | 
434  | 
def run(self, location='.', force=False):  | 
| 
2127.2.2
by Daniel Silverstone
 Refactor the remove-tree stuff after review from J-A-M  | 
435  | 
d = bzrdir.BzrDir.open(location)  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
436  | 
|
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
437  | 
try:  | 
438  | 
working = d.open_workingtree()  | 
|
| 
2127.2.2
by Daniel Silverstone
 Refactor the remove-tree stuff after review from J-A-M  | 
439  | 
except errors.NoWorkingTree:  | 
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
440  | 
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  | 
441  | 
except errors.NotLocalUrl:  | 
442  | 
raise errors.BzrCommandError("You cannot remove the working tree of a "  | 
|
443  | 
"remote path")  | 
|
| 
3667.2.1
by Lukáš Lalinský
 Make `bzr remove-tree` not remove trees with uncommitted changes by default  | 
444  | 
if not force:  | 
445  | 
changes = working.changes_from(working.basis_tree())  | 
|
446  | 
if changes.has_changed():  | 
|
447  | 
raise errors.UncommittedChanges(working)  | 
|
448  | 
||
| 
2127.2.2
by Daniel Silverstone
 Refactor the remove-tree stuff after review from J-A-M  | 
449  | 
working_path = working.bzrdir.root_transport.base  | 
450  | 
branch_path = working.branch.bzrdir.root_transport.base  | 
|
451  | 
if working_path != branch_path:  | 
|
452  | 
raise errors.BzrCommandError("You cannot remove the working tree from "  | 
|
453  | 
"a lightweight checkout")  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
454  | 
|
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
455  | 
d.destroy_workingtree()  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
456  | 
|
| 
2127.2.1
by Daniel Silverstone
 Add remove-tree and its blackbox tests  | 
457  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
458  | 
class cmd_revno(Command):  | 
459  | 
"""Show current revision number.  | 
|
460  | 
||
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
461  | 
    This is equal to the number of revisions on this branch.
 | 
462  | 
    """
 | 
|
463  | 
||
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
464  | 
_see_also = ['info']  | 
| 
1185.50.16
by John Arbash Meinel
 [patch] Michael Ellerman: 'Trivial patch to allow revno to take a location'  | 
465  | 
takes_args = ['location?']  | 
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
466  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
467  | 
    @display_command
 | 
| 
1185.50.16
by John Arbash Meinel
 [patch] Michael Ellerman: 'Trivial patch to allow revno to take a location'  | 
468  | 
def run(self, location=u'.'):  | 
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
469  | 
self.outf.write(str(Branch.open_containing(location)[0].revno()))  | 
470  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
471  | 
|
| 
1182
by Martin Pool
 - more disentangling of xml storage format from objects  | 
472  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
473  | 
class cmd_revision_info(Command):  | 
474  | 
"""Show revision number and revision id for a given revision identifier.  | 
|
475  | 
    """
 | 
|
476  | 
hidden = True  | 
|
477  | 
takes_args = ['revision_info*']  | 
|
| 
3886.1.1
by Michael Hudson
 support -d in the revision-info command  | 
478  | 
takes_options = [  | 
479  | 
'revision',  | 
|
480  | 
Option('directory',  | 
|
481  | 
help='Branch to examine, '  | 
|
482  | 
'rather than the one containing the working directory.',  | 
|
483  | 
short_name='d',  | 
|
484  | 
type=unicode,  | 
|
485  | 
            ),
 | 
|
486  | 
        ]
 | 
|
| 
1185.85.24
by John Arbash Meinel
 Moved run_bzr_decode into TestCase  | 
487  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
488  | 
    @display_command
 | 
| 
3886.1.1
by Michael Hudson
 support -d in the revision-info command  | 
489  | 
def run(self, revision=None, directory=u'.', revision_info_list=[]):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
490  | 
|
491  | 
revs = []  | 
|
492  | 
if revision is not None:  | 
|
493  | 
revs.extend(revision)  | 
|
| 
1185.5.4
by John Arbash Meinel
 Updated bzr revision-info, created tests.  | 
494  | 
if revision_info_list is not None:  | 
495  | 
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)  | 
496  | 
revs.append(RevisionSpec.from_string(rev))  | 
| 
2512.2.3
by Matthew Fuller
 Default revision-info to the head of the branch when no revision is  | 
497  | 
|
| 
3886.1.1
by Michael Hudson
 support -d in the revision-info command  | 
498  | 
b = Branch.open_containing(directory)[0]  | 
| 
2512.2.3
by Matthew Fuller
 Default revision-info to the head of the branch when no revision is  | 
499  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
500  | 
if len(revs) == 0:  | 
| 
2512.2.3
by Matthew Fuller
 Default revision-info to the head of the branch when no revision is  | 
501  | 
revs.append(RevisionSpec.from_string('-1'))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
502  | 
|
503  | 
for rev in revs:  | 
|
| 
3298.2.14
by Aaron Bentley
 Optimize revision-info and cat-revision  | 
504  | 
revision_id = rev.as_revision_id(b)  | 
505  | 
try:  | 
|
506  | 
revno = '%4d' % (b.revision_id_to_revno(revision_id))  | 
|
507  | 
except errors.NoSuchRevision:  | 
|
| 
2512.2.2
by Matthew Fuller
 Update revision-info to show dotted revnos.  | 
508  | 
dotted_map = b.get_revision_id_to_revno_map()  | 
| 
3298.2.14
by Aaron Bentley
 Optimize revision-info and cat-revision  | 
509  | 
revno = '.'.join(str(i) for i in dotted_map[revision_id])  | 
510  | 
print '%s %s' % (revno, revision_id)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
511  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
512  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
513  | 
class cmd_add(Command):  | 
514  | 
"""Add specified files or directories.  | 
|
515  | 
||
516  | 
    In non-recursive mode, all the named items are added, regardless
 | 
|
517  | 
    of whether they were previously ignored.  A warning is given if
 | 
|
518  | 
    any of the named files are already versioned.
 | 
|
519  | 
||
520  | 
    In recursive mode (the default), files are treated the same way
 | 
|
521  | 
    but the behaviour for directories is different.  Directories that
 | 
|
522  | 
    are already versioned do not give a warning.  All directories,
 | 
|
523  | 
    whether already versioned or not, are searched for files or
 | 
|
524  | 
    subdirectories that are neither versioned or ignored, and these
 | 
|
525  | 
    are added.  This search proceeds recursively into versioned
 | 
|
526  | 
    directories.  If no names are given '.' is assumed.
 | 
|
527  | 
||
528  | 
    Therefore simply saying 'bzr add' will version all files that
 | 
|
529  | 
    are currently unknown.
 | 
|
530  | 
||
| 
1185.3.3
by Martin Pool
 - patch from mpe to automatically add parent directories  | 
531  | 
    Adding a file whose parent directory is not versioned will
 | 
532  | 
    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).  | 
533  | 
    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  | 
534  | 
    get added when you add a file in the directory.
 | 
| 
1185.33.90
by Martin Pool
 [merge] add --dry-run option (mpe)  | 
535  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
536  | 
    --dry-run will show which files would be added, but not actually
 | 
| 
1185.33.90
by Martin Pool
 [merge] add --dry-run option (mpe)  | 
537  | 
    add them.
 | 
| 
1911.3.2
by John Arbash Meinel
 Adding the AddFromBaseAction, which tries to reuse file ids from another tree  | 
538  | 
|
539  | 
    --file-ids-from will try to use the file ids from the supplied path.
 | 
|
540  | 
    It looks up ids trying to find a matching parent directory with the
 | 
|
| 
2374.1.3
by Ian Clatworthy
 Minor man page fixes for add, commit, export  | 
541  | 
    same filename, and then by pure path. This option is rarely needed
 | 
542  | 
    but can be useful when adding the same logical file into two
 | 
|
543  | 
    branches that will be merged later (without showing the two different
 | 
|
| 
2374.1.4
by Ian Clatworthy
 Include feedback from mailing list.  | 
544  | 
    adds as a conflict). It is also useful when merging another project
 | 
545  | 
    into a subdirectory of this one.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
546  | 
    """
 | 
547  | 
takes_args = ['file*']  | 
|
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
548  | 
takes_options = [  | 
549  | 
Option('no-recurse',  | 
|
| 
2598.1.11
by Martin Pool
 Insist that all options have a help string and fix those that don't.  | 
550  | 
help="Don't recursively add the contents of directories."),  | 
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
551  | 
Option('dry-run',  | 
552  | 
help="Show what would be done, but don't actually do anything."),  | 
|
553  | 
'verbose',  | 
|
554  | 
Option('file-ids-from',  | 
|
555  | 
type=unicode,  | 
|
556  | 
help='Lookup file ids from this tree.'),  | 
|
557  | 
        ]
 | 
|
| 
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()  | 
558  | 
encoding_type = 'replace'  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
559  | 
_see_also = ['remove']  | 
| 
1185.53.1
by Michael Ellerman
 Add support for bzr add --dry-run  | 
560  | 
|
| 
1911.3.2
by John Arbash Meinel
 Adding the AddFromBaseAction, which tries to reuse file ids from another tree  | 
561  | 
def run(self, file_list, no_recurse=False, dry_run=False, verbose=False,  | 
562  | 
file_ids_from=None):  | 
|
| 
1185.53.1
by Michael Ellerman
 Add support for bzr add --dry-run  | 
563  | 
import bzrlib.add  | 
564  | 
||
| 
2255.7.69
by Robert Collins
 Fix all blackbox add tests, and the add --from-ids case in the UI.  | 
565  | 
base_tree = None  | 
| 
1911.3.2
by John Arbash Meinel
 Adding the AddFromBaseAction, which tries to reuse file ids from another tree  | 
566  | 
if file_ids_from is not None:  | 
567  | 
try:  | 
|
568  | 
base_tree, base_path = WorkingTree.open_containing(  | 
|
569  | 
file_ids_from)  | 
|
570  | 
except errors.NoWorkingTree:  | 
|
| 
1996.3.1
by John Arbash Meinel
 Demandloading builtins.py drops our load time from 350ms to 291ms  | 
571  | 
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  | 
572  | 
file_ids_from)  | 
573  | 
base_tree = base_branch.basis_tree()  | 
|
574  | 
||
575  | 
action = bzrlib.add.AddFromBaseAction(base_tree, base_path,  | 
|
576  | 
to_file=self.outf, should_print=(not is_quiet()))  | 
|
577  | 
else:  | 
|
578  | 
action = bzrlib.add.AddAction(to_file=self.outf,  | 
|
579  | 
should_print=(not is_quiet()))  | 
|
580  | 
||
| 
2255.7.69
by Robert Collins
 Fix all blackbox add tests, and the add --from-ids case in the UI.  | 
581  | 
if base_tree:  | 
582  | 
base_tree.lock_read()  | 
|
583  | 
try:  | 
|
| 
2568.2.6
by Robert Collins
 Review feedback.  | 
584  | 
file_list = self._maybe_expand_globs(file_list)  | 
| 
3586.1.34
by Ian Clatworthy
 fix tree/path handling for add  | 
585  | 
tree, file_list = tree_files_for_add(file_list)  | 
| 
2568.2.8
by Robert Collins
 Really really change the command to use the new API.  | 
586  | 
added, ignored = tree.smart_add(file_list, not  | 
| 
2568.2.2
by Robert Collins
 * New method ``_glob_expand_file_list_if_needed`` on the ``Command`` class  | 
587  | 
no_recurse, action=action, save=not dry_run)  | 
| 
2255.7.69
by Robert Collins
 Fix all blackbox add tests, and the add --from-ids case in the UI.  | 
588  | 
finally:  | 
589  | 
if base_tree is not None:  | 
|
590  | 
base_tree.unlock()  | 
|
| 
1185.46.8
by Aaron Bentley
 bzr add reports ignored patterns.  | 
591  | 
if len(ignored) > 0:  | 
| 
1711.1.2
by Robert Collins
 'bzr add' is now less verbose in telling you what ignore globs were  | 
592  | 
if verbose:  | 
593  | 
for glob in sorted(ignored.keys()):  | 
|
| 
1185.46.9
by Aaron Bentley
 Added verbose option to bzr add, to list all ignored files.  | 
594  | 
for path in ignored[glob]:  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
595  | 
self.outf.write("ignored %s matching \"%s\"\n"  | 
| 
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()  | 
596  | 
% (path, glob))  | 
| 
1711.1.2
by Robert Collins
 'bzr add' is now less verbose in telling you what ignore globs were  | 
597  | 
else:  | 
598  | 
match_len = 0  | 
|
599  | 
for glob, paths in ignored.items():  | 
|
600  | 
match_len += len(paths)  | 
|
| 
1685.1.69
by Wouter van Heyst
 merge bzr.dev 1740  | 
601  | 
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()  | 
602  | 
self.outf.write("If you wish to add some of these files,"  | 
603  | 
" please add them by name.\n")  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
604  | 
|
605  | 
||
606  | 
class cmd_mkdir(Command):  | 
|
607  | 
"""Create a new versioned directory.  | 
|
608  | 
||
609  | 
    This is equivalent to creating the directory and then adding it.
 | 
|
610  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
611  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
612  | 
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()  | 
613  | 
encoding_type = 'replace'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
614  | 
|
615  | 
def run(self, dir_list):  | 
|
616  | 
for d in dir_list:  | 
|
617  | 
os.mkdir(d)  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
618  | 
wt, dd = WorkingTree.open_containing(d)  | 
| 
1508.1.5
by Robert Collins
 Move add from Branch to WorkingTree.  | 
619  | 
wt.add([dd])  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
620  | 
self.outf.write('added %s\n' % d)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
621  | 
|
622  | 
||
623  | 
class cmd_relpath(Command):  | 
|
624  | 
"""Show path of a file relative to root"""  | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
625  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
626  | 
takes_args = ['filename']  | 
627  | 
hidden = True  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
628  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
629  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
630  | 
def run(self, filename):  | 
| 
1185.85.19
by John Arbash Meinel
 Updated bzr relpath  | 
631  | 
        # TODO: jam 20050106 Can relpath return a munged path if
 | 
632  | 
        #       sys.stdout encoding cannot represent it?
 | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
633  | 
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()  | 
634  | 
self.outf.write(relpath)  | 
635  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
636  | 
|
637  | 
||
638  | 
class cmd_inventory(Command):  | 
|
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
639  | 
"""Show inventory of the current working copy or a revision.  | 
640  | 
||
641  | 
    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'  | 
642  | 
    type using the --kind option.  For example: --kind file.
 | 
643  | 
||
644  | 
    It is also possible to restrict the list of files to a specific
 | 
|
645  | 
    set. For example: bzr inventory --show-ids this/file
 | 
|
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
646  | 
    """
 | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
647  | 
|
| 
1551.10.13
by Aaron Bentley
 Hide 'unknowns', document alterntatives to hidden commands  | 
648  | 
hidden = True  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
649  | 
_see_also = ['ls']  | 
| 
2598.1.11
by Martin Pool
 Insist that all options have a help string and fix those that don't.  | 
650  | 
takes_options = [  | 
651  | 
'revision',  | 
|
652  | 
'show-ids',  | 
|
653  | 
Option('kind',  | 
|
| 
2598.1.12
by Martin Pool
 Fix up --kind options  | 
654  | 
help='List entries of a particular kind: file, directory, symlink.',  | 
655  | 
type=unicode),  | 
|
| 
2598.1.11
by Martin Pool
 Insist that all options have a help string and fix those that don't.  | 
656  | 
        ]
 | 
| 
2027.4.2
by John Arbash Meinel
 Fix bug #3631, allow 'bzr inventory filename'  | 
657  | 
takes_args = ['file*']  | 
658  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
659  | 
    @display_command
 | 
| 
2027.4.2
by John Arbash Meinel
 Fix bug #3631, allow 'bzr inventory filename'  | 
660  | 
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'  | 
661  | 
if kind and kind not in ['file', 'directory', 'symlink']:  | 
| 
2598.1.12
by Martin Pool
 Fix up --kind options  | 
662  | 
raise errors.BzrCommandError('invalid kind %r specified' % (kind,))  | 
| 
2027.4.3
by John Arbash Meinel
 Change how 'bzr inventory' finds paths  | 
663  | 
|
| 
3984.3.7
by Daniel Watkins
 Fixed incorrect calls.  | 
664  | 
revision = _get_one_revision('inventory', revision)  | 
| 
2027.4.3
by John Arbash Meinel
 Change how 'bzr inventory' finds paths  | 
665  | 
work_tree, file_list = tree_files(file_list)  | 
| 
2255.7.24
by John Arbash Meinel
 Rework cmd_inventory so that it uses paths2ids and locks the trees for read.  | 
666  | 
work_tree.lock_read()  | 
667  | 
try:  | 
|
668  | 
if revision is not None:  | 
|
| 
3984.3.6
by Daniel Watkins
 Converted cmd_inventory to use _get_one_revision.  | 
669  | 
tree = revision.as_tree(work_tree.branch)  | 
| 
2255.7.24
by John Arbash Meinel
 Rework cmd_inventory so that it uses paths2ids and locks the trees for read.  | 
670  | 
|
671  | 
extra_trees = [work_tree]  | 
|
672  | 
tree.lock_read()  | 
|
673  | 
else:  | 
|
674  | 
tree = work_tree  | 
|
675  | 
extra_trees = []  | 
|
676  | 
||
677  | 
if file_list is not None:  | 
|
678  | 
file_ids = tree.paths2ids(file_list, trees=extra_trees,  | 
|
679  | 
require_versioned=True)  | 
|
680  | 
                # find_ids_across_trees may include some paths that don't
 | 
|
681  | 
                # exist in 'tree'.
 | 
|
682  | 
entries = sorted((tree.id2path(file_id), tree.inventory[file_id])  | 
|
683  | 
for file_id in file_ids if file_id in tree)  | 
|
684  | 
else:  | 
|
685  | 
entries = tree.inventory.entries()  | 
|
686  | 
finally:  | 
|
687  | 
tree.unlock()  | 
|
688  | 
if tree is not work_tree:  | 
|
689  | 
work_tree.unlock()  | 
|
| 
2027.4.2
by John Arbash Meinel
 Fix bug #3631, allow 'bzr inventory filename'  | 
690  | 
|
691  | 
for path, entry in entries:  | 
|
| 
1185.33.33
by Martin Pool
 [patch] add 'bzr inventory --kind directory'; remove 'bzr directories'  | 
692  | 
if kind and kind != entry.kind:  | 
693  | 
                continue
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
694  | 
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()  | 
695  | 
self.outf.write('%-50s %s\n' % (path, entry.file_id))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
696  | 
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()  | 
697  | 
self.outf.write(path)  | 
698  | 
self.outf.write('\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
699  | 
|
700  | 
||
701  | 
class cmd_mv(Command):  | 
|
702  | 
"""Move or rename a file.  | 
|
703  | 
||
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
704  | 
    :Usage:
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
705  | 
        bzr mv OLDNAME NEWNAME
 | 
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
706  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
707  | 
        bzr mv SOURCE... DESTINATION
 | 
708  | 
||
709  | 
    If the last argument is a versioned directory, all the other names
 | 
|
710  | 
    are moved into it.  Otherwise, there must be exactly two arguments
 | 
|
| 
2123.3.1
by Steffen Eichenberg
 the mv command is now able to move files that have already been moved on the file system  | 
711  | 
    and the file is changed to a new name.
 | 
712  | 
||
713  | 
    If OLDNAME does not exist on the filesystem but is versioned and
 | 
|
714  | 
    NEWNAME does exist on the filesystem but is not versioned, mv
 | 
|
715  | 
    assumes that the file has been manually moved and only updates
 | 
|
716  | 
    its internal inventory to reflect that change.
 | 
|
717  | 
    The same is valid when moving many SOURCE files to a DESTINATION.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
718  | 
|
719  | 
    Files cannot be moved between branches.
 | 
|
720  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
721  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
722  | 
takes_args = ['names*']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
723  | 
takes_options = [Option("after", help="Move only the bzr identifier"  | 
724  | 
" of the file, because the file has already been moved."),  | 
|
| 
3193.8.37
by Aaron Bentley
 Finish up conversion to mv --auto.  | 
725  | 
Option('auto', help='Automatically guess renames.'),  | 
726  | 
Option('dry-run', help='Avoid making changes when guessing renames.'),  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
727  | 
        ]
 | 
| 
1616.1.8
by Martin Pool
 Unify 'mv', 'move', 'rename'. (#5379, Matthew Fuller)  | 
728  | 
aliases = ['move', 'rename']  | 
| 
1185.85.26
by John Arbash Meinel
 bzr mv should succeed even if it can't display the paths.  | 
729  | 
encoding_type = 'replace'  | 
730  | 
||
| 
3193.8.37
by Aaron Bentley
 Finish up conversion to mv --auto.  | 
731  | 
def run(self, names_list, after=False, auto=False, dry_run=False):  | 
| 
3193.8.35
by Aaron Bentley
 Implement mv --auto.  | 
732  | 
if auto:  | 
| 
3193.8.37
by Aaron Bentley
 Finish up conversion to mv --auto.  | 
733  | 
return self.run_auto(names_list, after, dry_run)  | 
734  | 
elif dry_run:  | 
|
735  | 
raise errors.BzrCommandError('--dry-run requires --auto.')  | 
|
| 
1846.1.1
by Wouter van Heyst
 Don't fail on 'bzr mv', extract move tests from OldTests.  | 
736  | 
if names_list is None:  | 
737  | 
names_list = []  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
738  | 
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  | 
739  | 
raise errors.BzrCommandError("missing file argument")  | 
| 
3794.5.37
by Mark Hammond
 Canonicalization is now done via a param to file_list.  | 
740  | 
tree, rel_names = tree_files(names_list, canonicalize=False)  | 
| 
3201.2.1
by Lukáš Lalinský
 Make 'mv a b' work for already renamed directories, like it does for files  | 
741  | 
tree.lock_write()  | 
742  | 
try:  | 
|
743  | 
self._run(tree, names_list, rel_names, after)  | 
|
744  | 
finally:  | 
|
745  | 
tree.unlock()  | 
|
| 
3246.1.1
by Alexander Belchenko
 Allow rename (change case of name) directory on case-insensitive filesystem.  | 
746  | 
|
| 
3193.8.37
by Aaron Bentley
 Finish up conversion to mv --auto.  | 
747  | 
def run_auto(self, names_list, after, dry_run):  | 
| 
3193.8.36
by Aaron Bentley
 Get remaining behaviour under test.  | 
748  | 
if names_list is not None and len(names_list) > 1:  | 
749  | 
raise errors.BzrCommandError('Only one path may be specified to'  | 
|
750  | 
' --auto.')  | 
|
| 
3193.8.37
by Aaron Bentley
 Finish up conversion to mv --auto.  | 
751  | 
if after:  | 
752  | 
raise errors.BzrCommandError('--after cannot be specified with'  | 
|
753  | 
' --auto.')  | 
|
| 
3193.8.35
by Aaron Bentley
 Implement mv --auto.  | 
754  | 
work_tree, file_list = tree_files(names_list, default_branch='.')  | 
755  | 
work_tree.lock_write()  | 
|
756  | 
try:  | 
|
| 
3193.8.37
by Aaron Bentley
 Finish up conversion to mv --auto.  | 
757  | 
rename_map.RenameMap.guess_renames(work_tree, dry_run)  | 
| 
3193.8.35
by Aaron Bentley
 Implement mv --auto.  | 
758  | 
finally:  | 
759  | 
work_tree.unlock()  | 
|
760  | 
||
| 
3201.2.1
by Lukáš Lalinský
 Make 'mv a b' work for already renamed directories, like it does for files  | 
761  | 
def _run(self, tree, names_list, rel_names, after):  | 
762  | 
into_existing = osutils.isdir(names_list[-1])  | 
|
763  | 
if into_existing and len(names_list) == 2:  | 
|
| 
3249.4.1
by Alexander Belchenko
 merge Lukas' patch and update it with case-insensitive rename check.  | 
764  | 
            # special cases:
 | 
765  | 
            # a. case-insensitive filesystem and change case of dir
 | 
|
766  | 
            # b. move directory after the fact (if the source used to be
 | 
|
767  | 
            #    a directory, but now doesn't exist in the working tree
 | 
|
768  | 
            #    and the target is an existing directory, just rename it)
 | 
|
769  | 
if (not tree.case_sensitive  | 
|
770  | 
and rel_names[0].lower() == rel_names[1].lower()):  | 
|
| 
3201.2.1
by Lukáš Lalinský
 Make 'mv a b' work for already renamed directories, like it does for files  | 
771  | 
into_existing = False  | 
| 
3249.4.1
by Alexander Belchenko
 merge Lukas' patch and update it with case-insensitive rename check.  | 
772  | 
else:  | 
773  | 
inv = tree.inventory  | 
|
| 
3794.5.6
by Mark Hammond
 Don't always call osutils.canonical_relpath() on the args, but let the necessary commands do what is right for them; cmd_move and cmd_commit both now use . Move and commit call Have the move and checkin commands use get_canonical_path(). Lots new move tests.  | 
774  | 
                # 'fix' the case of a potential 'from'
 | 
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
775  | 
from_id = tree.path2id(  | 
776  | 
tree.get_canonical_inventory_path(rel_names[0]))  | 
|
| 
3249.4.1
by Alexander Belchenko
 merge Lukas' patch and update it with case-insensitive rename check.  | 
777  | 
if (not osutils.lexists(names_list[0]) and  | 
778  | 
from_id and inv.get_file_kind(from_id) == "directory"):  | 
|
779  | 
into_existing = False  | 
|
780  | 
        # move/rename
 | 
|
| 
3201.2.1
by Lukáš Lalinský
 Make 'mv a b' work for already renamed directories, like it does for files  | 
781  | 
if into_existing:  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
782  | 
            # move into existing directory
 | 
| 
3794.5.6
by Mark Hammond
 Don't always call osutils.canonical_relpath() on the args, but let the necessary commands do what is right for them; cmd_move and cmd_commit both now use . Move and commit call Have the move and checkin commands use get_canonical_path(). Lots new move tests.  | 
783  | 
            # All entries reference existing inventory items, so fix them up
 | 
784  | 
            # for cicp file-systems.
 | 
|
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
785  | 
rel_names = tree.get_canonical_inventory_paths(rel_names)  | 
| 
2123.3.5
by Steffen Eichenberg
 specifying named parameters  | 
786  | 
for pair in tree.move(rel_names[:-1], rel_names[-1], after=after):  | 
| 
1185.85.25
by John Arbash Meinel
 updated 'bzr mv'  | 
787  | 
self.outf.write("%s => %s\n" % pair)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
788  | 
else:  | 
789  | 
if len(names_list) != 2:  | 
|
| 
2123.3.1
by Steffen Eichenberg
 the mv command is now able to move files that have already been moved on the file system  | 
790  | 
raise errors.BzrCommandError('to mv multiple files the'  | 
791  | 
                                             ' destination must be a versioned'
 | 
|
792  | 
' directory')  | 
|
| 
3794.5.6
by Mark Hammond
 Don't always call osutils.canonical_relpath() on the args, but let the necessary commands do what is right for them; cmd_move and cmd_commit both now use . Move and commit call Have the move and checkin commands use get_canonical_path(). Lots new move tests.  | 
793  | 
|
794  | 
            # for cicp file-systems: the src references an existing inventory
 | 
|
795  | 
            # item:
 | 
|
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
796  | 
src = tree.get_canonical_inventory_path(rel_names[0])  | 
| 
3794.5.6
by Mark Hammond
 Don't always call osutils.canonical_relpath() on the args, but let the necessary commands do what is right for them; cmd_move and cmd_commit both now use . Move and commit call Have the move and checkin commands use get_canonical_path(). Lots new move tests.  | 
797  | 
            # Find the canonical version of the destination:  In all cases, the
 | 
798  | 
            # parent of the target must be in the inventory, so we fetch the
 | 
|
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
799  | 
            # canonical version from there (we do not always *use* the
 | 
800  | 
            # canonicalized tail portion - we may be attempting to rename the
 | 
|
801  | 
            # case of the tail)
 | 
|
802  | 
canon_dest = tree.get_canonical_inventory_path(rel_names[1])  | 
|
803  | 
dest_parent = osutils.dirname(canon_dest)  | 
|
804  | 
spec_tail = osutils.basename(rel_names[1])  | 
|
805  | 
            # For a CICP file-system, we need to avoid creating 2 inventory
 | 
|
806  | 
            # entries that differ only by case.  So regardless of the case
 | 
|
807  | 
            # we *want* to use (ie, specified by the user or the file-system),
 | 
|
808  | 
            # we must always choose to use the case of any existing inventory
 | 
|
809  | 
            # items.  The only exception to this is when we are attempting a
 | 
|
810  | 
            # case-only rename (ie, canonical versions of src and dest are
 | 
|
811  | 
            # the same)
 | 
|
812  | 
dest_id = tree.path2id(canon_dest)  | 
|
813  | 
if dest_id is None or tree.path2id(src) == dest_id:  | 
|
814  | 
                # No existing item we care about, so work out what case we
 | 
|
815  | 
                # are actually going to use.
 | 
|
816  | 
if after:  | 
|
817  | 
                    # If 'after' is specified, the tail must refer to a file on disk.
 | 
|
818  | 
if dest_parent:  | 
|
819  | 
dest_parent_fq = osutils.pathjoin(tree.basedir, dest_parent)  | 
|
820  | 
else:  | 
|
821  | 
                        # pathjoin with an empty tail adds a slash, which breaks
 | 
|
822  | 
                        # relpath :(
 | 
|
823  | 
dest_parent_fq = tree.basedir  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
824  | 
|
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
825  | 
dest_tail = osutils.canonical_relpath(  | 
826  | 
dest_parent_fq,  | 
|
827  | 
osutils.pathjoin(dest_parent_fq, spec_tail))  | 
|
| 
3794.5.6
by Mark Hammond
 Don't always call osutils.canonical_relpath() on the args, but let the necessary commands do what is right for them; cmd_move and cmd_commit both now use . Move and commit call Have the move and checkin commands use get_canonical_path(). Lots new move tests.  | 
828  | 
else:  | 
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
829  | 
                    # not 'after', so case as specified is used
 | 
830  | 
dest_tail = spec_tail  | 
|
831  | 
else:  | 
|
832  | 
                # Use the existing item so 'mv' fails with AlreadyVersioned.
 | 
|
833  | 
dest_tail = os.path.basename(canon_dest)  | 
|
| 
3794.5.11
by Mark Hammond
 whitespace/logging changes.  | 
834  | 
dest = osutils.pathjoin(dest_parent, dest_tail)  | 
| 
3794.5.20
by Mark Hammond
 Use get_canonical_inventory_path and get_canonical_inventory_paths, and handle more edge cases in 'mv'  | 
835  | 
mutter("attempting to move %s => %s", src, dest)  | 
| 
3794.5.6
by Mark Hammond
 Don't always call osutils.canonical_relpath() on the args, but let the necessary commands do what is right for them; cmd_move and cmd_commit both now use . Move and commit call Have the move and checkin commands use get_canonical_path(). Lots new move tests.  | 
836  | 
tree.rename_one(src, dest, after=after)  | 
837  | 
self.outf.write("%s => %s\n" % (src, dest))  | 
|
| 
3246.1.1
by Alexander Belchenko
 Allow rename (change case of name) directory on case-insensitive filesystem.  | 
838  | 
|
839  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
840  | 
class cmd_pull(Command):  | 
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
841  | 
"""Turn this branch into a mirror of another branch.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
842  | 
|
843  | 
    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  | 
844  | 
    considered diverged if the destination branch's most recent commit is one
 | 
845  | 
    that has not been merged (directly or indirectly) into the parent.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
846  | 
|
| 
1661.1.1
by Martin Pool
 [merge] olaf's --remember changes  | 
847  | 
    If branches have diverged, you can use 'bzr merge' to integrate the changes
 | 
848  | 
    from one into the other.  Once one branch has merged, the other should
 | 
|
849  | 
    be able to pull it again.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
850  | 
|
| 
1185.12.92
by Aaron Bentley
 Fixed pull help, renamed clobber to overwrite  | 
851  | 
    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  | 
852  | 
    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  | 
853  | 
|
854  | 
    If there is no default location set, the first pull will set it.  After
 | 
|
855  | 
    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.  | 
856  | 
    default, use --remember. The value will only be saved if the remote
 | 
857  | 
    location can be accessed.
 | 
|
| 
3313.1.1
by Ian Clatworthy
 Improve doc on send/merge relationship (Peter Schuller)  | 
858  | 
|
859  | 
    Note: The location can be specified either in the form of a branch,
 | 
|
860  | 
    or in the form of a path to a file containing a merge directive generated
 | 
|
861  | 
    with bzr send.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
862  | 
    """
 | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
863  | 
|
| 
4095.2.1
by Neil Martinsen-Burrell
 Better help for bzr send  | 
864  | 
_see_also = ['push', 'update', 'status-flags', 'send']  | 
| 
1551.17.4
by Aaron Bentley
 Make pull -v description more specific  | 
865  | 
takes_options = ['remember', 'overwrite', 'revision',  | 
| 
2768.1.5
by Ian Clatworthy
 Wrap new std verbose option with new help instead of declaring a new one  | 
866  | 
custom_help('verbose',  | 
| 
1551.17.4
by Aaron Bentley
 Make pull -v description more specific  | 
867  | 
help='Show logs of pulled revisions.'),  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
868  | 
Option('directory',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
869  | 
help='Branch to pull into, '  | 
870  | 
'rather than the one containing the working directory.',  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
871  | 
short_name='d',  | 
872  | 
type=unicode,  | 
|
873  | 
            ),
 | 
|
874  | 
        ]
 | 
|
| 
2520.1.6
by Daniel Watkins
 Fixed 'pull' help.  | 
875  | 
takes_args = ['location?']  | 
| 
1185.85.27
by John Arbash Meinel
 Updated bzr branch and bzr pull  | 
876  | 
encoding_type = 'replace'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
877  | 
|
| 
1551.11.10
by Aaron Bentley
 Add change reporting to pull  | 
878  | 
def run(self, location=None, remember=False, overwrite=False,  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
879  | 
revision=None, verbose=False,  | 
880  | 
directory=None):  | 
|
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
881  | 
        # FIXME: too much stuff is in the command class
 | 
| 
1551.14.11
by Aaron Bentley
 rename rev_id and other_rev_id  | 
882  | 
revision_id = None  | 
| 
1551.14.7
by Aaron Bentley
 test suite fixes  | 
883  | 
mergeable = None  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
884  | 
if directory is None:  | 
885  | 
directory = u'.'  | 
|
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
886  | 
try:  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
887  | 
tree_to = WorkingTree.open_containing(directory)[0]  | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
888  | 
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  | 
889  | 
except errors.NoWorkingTree:  | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
890  | 
tree_to = None  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
891  | 
branch_to = Branch.open_containing(directory)[0]  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
892  | 
|
| 
2817.4.3
by Vincent Ladeuil
 Add tests for commit, reuse master branch transport.  | 
893  | 
possible_transports = []  | 
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
894  | 
if location is not None:  | 
| 
3251.4.10
by Aaron Bentley
 Pull of launchpad locations works (abentley, #181945)  | 
895  | 
try:  | 
896  | 
mergeable = bundle.read_mergeable_from_url(location,  | 
|
897  | 
possible_transports=possible_transports)  | 
|
898  | 
except errors.NotABundle:  | 
|
899  | 
mergeable = None  | 
|
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
900  | 
|
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
901  | 
stored_loc = branch_to.get_parent()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
902  | 
if location is None:  | 
903  | 
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  | 
904  | 
raise errors.BzrCommandError("No pull location known or"  | 
905  | 
" specified.")  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
906  | 
else:  | 
| 
1685.1.58
by Martin Pool
 urlutils.unescape_for_display should return Unicode  | 
907  | 
display_url = urlutils.unescape_for_display(stored_loc,  | 
908  | 
self.outf.encoding)  | 
|
| 
3200.1.1
by James Westby
 Make pull --quiet more quiet. Fixes #185907.  | 
909  | 
if not is_quiet():  | 
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
910  | 
self.outf.write("Using saved parent location: %s\n" % display_url)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
911  | 
location = stored_loc  | 
| 
1185.56.1
by Michael Ellerman
 Simplify handling of DivergedBranches in cmd_pull()  | 
912  | 
|
| 
3993.1.1
by Ian Clatworthy
 helper function when only one revision required (Daniel Watkins)  | 
913  | 
revision = _get_one_revision('pull', revision)  | 
| 
1551.14.4
by Aaron Bentley
 Change bundle reader and merge directive to both be 'mergeables'  | 
914  | 
if mergeable is not None:  | 
915  | 
if revision is not None:  | 
|
916  | 
raise errors.BzrCommandError(  | 
|
917  | 
'Cannot use -r with merge directives or bundles')  | 
|
| 
2520.4.109
by Aaron Bentley
 start work on directive cherry-picking  | 
918  | 
mergeable.install_revisions(branch_to.repository)  | 
919  | 
base_revision_id, revision_id, verified = \  | 
|
920  | 
mergeable.get_merge_request(branch_to.repository)  | 
|
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
921  | 
branch_from = branch_to  | 
922  | 
else:  | 
|
| 
3251.4.10
by Aaron Bentley
 Pull of launchpad locations works (abentley, #181945)  | 
923  | 
branch_from = Branch.open(location,  | 
924  | 
possible_transports=possible_transports)  | 
|
| 
1711.3.3
by John Arbash Meinel
 Allow pull to use a bundle as a target,  | 
925  | 
|
926  | 
if branch_to.get_parent() is None or remember:  | 
|
927  | 
branch_to.set_parent(branch_from.base)  | 
|
928  | 
||
| 
1551.14.4
by Aaron Bentley
 Change bundle reader and merge directive to both be 'mergeables'  | 
929  | 
if revision is not None:  | 
| 
3984.3.8
by Daniel Watkins
 Converted cmd_pull.  | 
930  | 
revision_id = revision.as_revision_id(branch_from)  | 
| 
1185.76.1
by Erik Bågfors
 Support for --revision in pull  | 
931  | 
|
| 
1551.19.42
by Aaron Bentley
 Add lock around branch pull  | 
932  | 
branch_to.lock_write()  | 
933  | 
try:  | 
|
934  | 
if tree_to is not None:  | 
|
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
935  | 
view_info = _get_view_info_for_change_reporter(tree_to)  | 
| 
1551.19.42
by Aaron Bentley
 Add lock around branch pull  | 
936  | 
change_reporter = delta._ChangeReporter(  | 
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
937  | 
unversioned_filter=tree_to.is_ignored, view_info=view_info)  | 
| 
1551.19.42
by Aaron Bentley
 Add lock around branch pull  | 
938  | 
result = tree_to.pull(branch_from, overwrite, revision_id,  | 
939  | 
change_reporter,  | 
|
940  | 
possible_transports=possible_transports)  | 
|
941  | 
else:  | 
|
942  | 
result = branch_to.pull(branch_from, overwrite, revision_id)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
943  | 
|
| 
1551.19.42
by Aaron Bentley
 Add lock around branch pull  | 
944  | 
result.report(self.outf)  | 
945  | 
if verbose and result.old_revid != result.new_revid:  | 
|
| 
3848.1.11
by Aaron Bentley
 Cleanup and use of show_branch_change  | 
946  | 
log.show_branch_change(branch_to, self.outf, result.old_revno,  | 
947  | 
result.old_revid)  | 
|
| 
1551.19.42
by Aaron Bentley
 Add lock around branch pull  | 
948  | 
finally:  | 
949  | 
branch_to.unlock()  | 
|
| 
1185.31.5
by John Arbash Meinel
 Merged pull --verbose changes  | 
950  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
951  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
952  | 
class cmd_push(Command):  | 
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
953  | 
"""Update a mirror of this branch.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
954  | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
955  | 
    The target branch will not have its working tree populated because this
 | 
956  | 
    is both expensive, and is not supported on remote file systems.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
957  | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
958  | 
    Some smart servers or protocols *may* put the working tree in place in
 | 
959  | 
    the future.
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
960  | 
|
961  | 
    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  | 
962  | 
    considered diverged if the destination branch's most recent commit is one
 | 
963  | 
    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.  | 
964  | 
|
965  | 
    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  | 
966  | 
    the other branch completely, discarding its unmerged changes.
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
967  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
968  | 
    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  | 
969  | 
    do a merge (see bzr help merge) from the other branch, and commit that.
 | 
970  | 
    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  | 
971  | 
|
972  | 
    If there is no default push location set, the first push will set it.
 | 
|
973  | 
    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.  | 
974  | 
    default, use --remember. The value will only be saved if the remote
 | 
975  | 
    location can be accessed.
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
976  | 
    """
 | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
977  | 
|
| 
2485.1.2
by James Westby
 Update with comments from review, thanks to John and Aaron.  | 
978  | 
_see_also = ['pull', 'update', 'working-trees']  | 
| 
3256.1.2
by Daniel Watkins
 Added revision argument to push.  | 
979  | 
takes_options = ['remember', 'overwrite', 'verbose', 'revision',  | 
| 
2279.3.1
by mbp at sourcefrog
 Add a -d option to push, pull, merge (ported from tags branch)  | 
980  | 
Option('create-prefix',  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
981  | 
help='Create the path leading up to the branch '  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
982  | 
'if it does not already exist.'),  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
983  | 
Option('directory',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
984  | 
help='Branch to push from, '  | 
985  | 
'rather than the one containing the working directory.',  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
986  | 
short_name='d',  | 
987  | 
type=unicode,  | 
|
988  | 
            ),
 | 
|
| 
2279.3.1
by mbp at sourcefrog
 Add a -d option to push, pull, merge (ported from tags branch)  | 
989  | 
Option('use-existing-dir',  | 
990  | 
help='By default push will fail if the target'  | 
|
991  | 
                    ' directory exists, but does not already'
 | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
992  | 
                    ' have a control directory.  This flag will'
 | 
| 
2279.3.1
by mbp at sourcefrog
 Add a -d option to push, pull, merge (ported from tags branch)  | 
993  | 
' allow push to proceed.'),  | 
| 
3549.1.1
by Martin Pool
 rename push --reference to --stacked-on  | 
994  | 
Option('stacked',  | 
995  | 
help='Create a stacked branch that references the public location '  | 
|
996  | 
'of the parent branch.'),  | 
|
997  | 
Option('stacked-on',  | 
|
| 
3221.19.4
by Ian Clatworthy
 shallow -> stacked  | 
998  | 
help='Create a stacked branch that refers to another branch '  | 
| 
3221.19.2
by Ian Clatworthy
 tweaks to ui during review by igc  | 
999  | 
                'for the commit history. Only the work not present in the '
 | 
1000  | 
'referenced branch is included in the branch created.',  | 
|
| 
3221.11.12
by Robert Collins
 Basic push --reference support, requires url, slow.  | 
1001  | 
type=unicode),  | 
| 
2279.3.1
by mbp at sourcefrog
 Add a -d option to push, pull, merge (ported from tags branch)  | 
1002  | 
        ]
 | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1003  | 
takes_args = ['location?']  | 
| 
1185.85.31
by John Arbash Meinel
 Updated bzr push, including bringing in the unused --verbose flag.  | 
1004  | 
encoding_type = 'replace'  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1005  | 
|
| 
1495
by Robert Collins
 Add a --create-prefix to the new push command.  | 
1006  | 
def run(self, location=None, remember=False, overwrite=False,  | 
| 
3221.14.3
by Ian Clatworthy
 Merge bzr.dev r3466  | 
1007  | 
create_prefix=False, verbose=False, revision=None,  | 
| 
3549.1.1
by Martin Pool
 rename push --reference to --stacked-on  | 
1008  | 
use_existing_dir=False, directory=None, stacked_on=None,  | 
1009  | 
stacked=False):  | 
|
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1010  | 
from bzrlib.push import _show_push_branch  | 
1011  | 
||
1012  | 
        # Get the source branch and revision_id
 | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
1013  | 
if directory is None:  | 
1014  | 
directory = '.'  | 
|
| 
3221.11.13
by Robert Collins
 Allow push --shallow to just work, and fix the testing HTTPServer to not be affected by chdir() calls.  | 
1015  | 
br_from = Branch.open_containing(directory)[0]  | 
| 
3984.3.9
by Daniel Watkins
 Converted cmd_push.  | 
1016  | 
revision = _get_one_revision('push', revision)  | 
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1017  | 
if revision is not None:  | 
| 
3984.3.9
by Daniel Watkins
 Converted cmd_push.  | 
1018  | 
revision_id = revision.in_history(br_from).rev_id  | 
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1019  | 
else:  | 
1020  | 
revision_id = br_from.last_revision()  | 
|
1021  | 
||
| 
3549.1.1
by Martin Pool
 rename push --reference to --stacked-on  | 
1022  | 
        # Get the stacked_on branch, if any
 | 
1023  | 
if stacked_on is not None:  | 
|
1024  | 
stacked_on = urlutils.normalize_url(stacked_on)  | 
|
| 
3221.19.4
by Ian Clatworthy
 shallow -> stacked  | 
1025  | 
elif stacked:  | 
| 
3221.11.15
by Robert Collins
 no parent branch causes an error on push --shallow.  | 
1026  | 
parent_url = br_from.get_parent()  | 
1027  | 
if parent_url:  | 
|
1028  | 
parent = Branch.open(parent_url)  | 
|
| 
3549.1.1
by Martin Pool
 rename push --reference to --stacked-on  | 
1029  | 
stacked_on = parent.get_public_branch()  | 
1030  | 
if not stacked_on:  | 
|
| 
3221.11.17
by Robert Collins
 no public location causes the parent to be used directly with push --shallow.  | 
1031  | 
                    # I considered excluding non-http url's here, thus forcing
 | 
1032  | 
                    # 'public' branches only, but that only works for some
 | 
|
| 
3221.14.3
by Ian Clatworthy
 Merge bzr.dev r3466  | 
1033  | 
                    # users, so it's best to just depend on the user spotting an
 | 
| 
3221.11.17
by Robert Collins
 no public location causes the parent to be used directly with push --shallow.  | 
1034  | 
                    # error by the feedback given to them. RBC 20080227.
 | 
| 
3549.1.1
by Martin Pool
 rename push --reference to --stacked-on  | 
1035  | 
stacked_on = parent_url  | 
1036  | 
if not stacked_on:  | 
|
| 
3221.11.15
by Robert Collins
 no parent branch causes an error on push --shallow.  | 
1037  | 
raise errors.BzrCommandError(  | 
1038  | 
"Could not determine branch to refer to.")  | 
|
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1039  | 
|
1040  | 
        # Get the destination location
 | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1041  | 
if location is None:  | 
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1042  | 
stored_loc = br_from.get_push_location()  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1043  | 
if stored_loc is None:  | 
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1044  | 
raise errors.BzrCommandError(  | 
1045  | 
"No push location known or specified.")  | 
|
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1046  | 
else:  | 
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
1047  | 
display_url = urlutils.unescape_for_display(stored_loc,  | 
1048  | 
self.outf.encoding)  | 
|
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
1049  | 
self.outf.write("Using saved push location: %s\n" % display_url)  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1050  | 
location = stored_loc  | 
| 
1685.1.22
by John Arbash Meinel
 cmd_push was passing the location directly to relpath, rather than a URL  | 
1051  | 
|
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1052  | 
_show_push_branch(br_from, revision_id, location, self.outf,  | 
1053  | 
verbose=verbose, overwrite=overwrite, remember=remember,  | 
|
| 
3549.1.1
by Martin Pool
 rename push --reference to --stacked-on  | 
1054  | 
stacked_on=stacked_on, create_prefix=create_prefix,  | 
| 
3221.19.1
by Ian Clatworthy
 refactor cmd_push to use a helper function  | 
1055  | 
use_existing_dir=use_existing_dir)  | 
| 
1490
by Robert Collins
 Implement a 'bzr push' command, with saved locations; update diff to return 1.  | 
1056  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1057  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1058  | 
class cmd_branch(Command):  | 
1059  | 
"""Create a new copy of a branch.  | 
|
1060  | 
||
1061  | 
    If the TO_LOCATION is omitted, the last component of the FROM_LOCATION will
 | 
|
1062  | 
    be used.  In other words, "branch ../foo/bar" will attempt to create ./bar.
 | 
|
| 
2512.4.1
by Ian Clatworthy
 Fixes #115491 - 'branch lp:projname' now creates ./projname as exected  | 
1063  | 
    If the FROM_LOCATION has no / or path separator embedded, the TO_LOCATION
 | 
1064  | 
    is derived from the FROM_LOCATION by stripping a leading scheme or drive
 | 
|
1065  | 
    identifier, if any. For example, "branch lp:foo-bar" will attempt to
 | 
|
1066  | 
    create ./foo-bar.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1067  | 
|
1068  | 
    To retrieve the branch as of a particular revision, supply the --revision
 | 
|
1069  | 
    parameter, as in "branch foo/bar -r 5".
 | 
|
1070  | 
    """
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1071  | 
|
1072  | 
_see_also = ['checkout']  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1073  | 
takes_args = ['from_location', 'to_location?']  | 
| 
3984.3.5
by Daniel Watkins
 Changed from option type to helper function.  | 
1074  | 
takes_options = ['revision', Option('hardlink',  | 
| 
3327.2.1
by John Klinger
 Added --no-trees option to branch command  | 
1075  | 
help='Hard-link working tree files where possible.'),  | 
| 
3983.1.1
by Daniel Watkins
 Merged John Klinger's original work.  | 
1076  | 
Option('no-tree',  | 
| 
3983.1.2
by Daniel Watkins
 Minor cleanup.  | 
1077  | 
help="Create a branch without a working-tree."),  | 
| 
3221.20.3
by Ian Clatworthy
 shallow -> stacked  | 
1078  | 
Option('stacked',  | 
1079  | 
help='Create a stacked branch referring to the source branch. '  | 
|
| 
3221.11.20
by Robert Collins
 Support --shallow on branch.  | 
1080  | 
                'The new branch will depend on the availability of the source '
 | 
1081  | 
'branch for all operations.'),  | 
|
| 
3696.2.3
by Daniel Watkins
 Added --standalone option to branch.  | 
1082  | 
Option('standalone',  | 
1083  | 
help='Do not use a shared repository, even if available.'),  | 
|
| 
3221.11.20
by Robert Collins
 Support --shallow on branch.  | 
1084  | 
        ]
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1085  | 
aliases = ['get', 'clone']  | 
1086  | 
||
| 
3136.1.3
by Aaron Bentley
 Implement hard-link support for branch and checkout  | 
1087  | 
def run(self, from_location, to_location=None, revision=None,  | 
| 
3983.1.7
by Daniel Watkins
 Review comments from jam.  | 
1088  | 
hardlink=False, stacked=False, standalone=False, no_tree=False):  | 
| 
2220.2.30
by Martin Pool
 split out tag-merging code and add some tests  | 
1089  | 
from bzrlib.tag import _merge_tags_if_possible  | 
| 
2283.1.1
by John Arbash Meinel
 (John Arbash Meinel) (trivial) remove unused and incorrect code.  | 
1090  | 
|
| 
3123.5.11
by Aaron Bentley
 Accelerate branching from a lightweight checkout  | 
1091  | 
accelerator_tree, br_from = bzrdir.BzrDir.open_tree_or_branch(  | 
1092  | 
from_location)  | 
|
| 
3984.3.7
by Daniel Watkins
 Fixed incorrect calls.  | 
1093  | 
revision = _get_one_revision('branch', revision)  | 
| 
1185.17.3
by Martin Pool
 [pick] larger read lock scope for branch command  | 
1094  | 
br_from.lock_read()  | 
1095  | 
try:  | 
|
| 
3984.3.3
by Daniel Watkins
 Converted cmd_branch to use 1revision.  | 
1096  | 
if revision is not None:  | 
1097  | 
revision_id = revision.as_revision_id(br_from)  | 
|
| 
1185.8.4
by Aaron Bentley
 Fixed branch -r  | 
1098  | 
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.  | 
1099  | 
                # FIXME - wt.last_revision, fallback to branch, fall back to
 | 
1100  | 
                # None or perhaps NULL_REVISION to mean copy nothing
 | 
|
1101  | 
                # RBC 20060209
 | 
|
1102  | 
revision_id = br_from.last_revision()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1103  | 
if to_location is None:  | 
| 
2512.4.1
by Ian Clatworthy
 Fixes #115491 - 'branch lp:projname' now creates ./projname as exected  | 
1104  | 
to_location = urlutils.derive_to_location(from_location)  | 
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1105  | 
to_transport = transport.get_transport(to_location)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1106  | 
try:  | 
| 
1685.1.20
by John Arbash Meinel
 More changes to get 'bzr branch' and 'bzr pull' to work  | 
1107  | 
to_transport.mkdir('.')  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1108  | 
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  | 
1109  | 
raise errors.BzrCommandError('Target directory "%s" already'  | 
1110  | 
' exists.' % to_location)  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1111  | 
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  | 
1112  | 
raise errors.BzrCommandError('Parent of "%s" does not exist.'  | 
1113  | 
% to_location)  | 
|
| 
3978.2.3
by Jelmer Vernooij
 Revert debug code.  | 
1114  | 
try:  | 
1115  | 
                # preserve whatever source format we have.
 | 
|
1116  | 
dir = br_from.bzrdir.sprout(to_transport.base, revision_id,  | 
|
1117  | 
possible_transports=[to_transport],  | 
|
1118  | 
accelerator_tree=accelerator_tree,  | 
|
1119  | 
hardlink=hardlink, stacked=stacked,  | 
|
1120  | 
force_new_repo=standalone,  | 
|
| 
3983.1.7
by Daniel Watkins
 Review comments from jam.  | 
1121  | 
create_tree_if_local=not no_tree,  | 
| 
3978.2.3
by Jelmer Vernooij
 Revert debug code.  | 
1122  | 
source_branch=br_from)  | 
1123  | 
branch = dir.open_branch()  | 
|
1124  | 
except errors.NoSuchRevision:  | 
|
1125  | 
to_transport.delete_tree('.')  | 
|
1126  | 
msg = "The branch %s has no revision %s." % (from_location,  | 
|
| 
3984.3.3
by Daniel Watkins
 Converted cmd_branch to use 1revision.  | 
1127  | 
revision)  | 
| 
3978.2.3
by Jelmer Vernooij
 Revert debug code.  | 
1128  | 
raise errors.BzrCommandError(msg)  | 
| 
2220.2.30
by Martin Pool
 split out tag-merging code and add some tests  | 
1129  | 
_merge_tags_if_possible(br_from, branch)  | 
| 
3221.20.3
by Ian Clatworthy
 shallow -> stacked  | 
1130  | 
            # If the source branch is stacked, the new branch may
 | 
1131  | 
            # be stacked whether we asked for that explicitly or not.
 | 
|
1132  | 
            # We therefore need a try/except here and not just 'if stacked:'
 | 
|
| 
3221.11.19
by Robert Collins
 Branching a shallow branch gets a shallow branch.  | 
1133  | 
try:  | 
| 
3221.20.3
by Ian Clatworthy
 shallow -> stacked  | 
1134  | 
note('Created new stacked branch referring to %s.' %  | 
| 
3537.3.1
by Martin Pool
 Rename branch.get_stacked_on to get_stacked_on_url  | 
1135  | 
branch.get_stacked_on_url())  | 
| 
3221.11.19
by Robert Collins
 Branching a shallow branch gets a shallow branch.  | 
1136  | 
except (errors.NotStacked, errors.UnstackableBranchFormat,  | 
| 
3221.11.20
by Robert Collins
 Support --shallow on branch.  | 
1137  | 
errors.UnstackableRepositoryFormat), e:  | 
| 
3221.11.19
by Robert Collins
 Branching a shallow branch gets a shallow branch.  | 
1138  | 
note('Branched %d revision(s).' % branch.revno())  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1139  | 
finally:  | 
| 
1185.17.3
by Martin Pool
 [pick] larger read lock scope for branch command  | 
1140  | 
br_from.unlock()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1141  | 
|
1142  | 
||
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1143  | 
class cmd_checkout(Command):  | 
1144  | 
"""Create a new checkout of an existing branch.  | 
|
1145  | 
||
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1146  | 
    If BRANCH_LOCATION is omitted, checkout will reconstitute a working tree for
 | 
1147  | 
    the branch found in '.'. This is useful if you have removed the working tree
 | 
|
1148  | 
    or if it was never created - i.e. if you pushed the branch to its current
 | 
|
1149  | 
    location using SFTP.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1150  | 
|
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1151  | 
    If the TO_LOCATION is omitted, the last component of the BRANCH_LOCATION will
 | 
1152  | 
    be used.  In other words, "checkout ../foo/bar" will attempt to create ./bar.
 | 
|
| 
2512.4.1
by Ian Clatworthy
 Fixes #115491 - 'branch lp:projname' now creates ./projname as exected  | 
1153  | 
    If the BRANCH_LOCATION has no / or path separator embedded, the TO_LOCATION
 | 
1154  | 
    is derived from the BRANCH_LOCATION by stripping a leading scheme or drive
 | 
|
1155  | 
    identifier, if any. For example, "checkout lp:foo-bar" will attempt to
 | 
|
1156  | 
    create ./foo-bar.
 | 
|
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1157  | 
|
1158  | 
    To retrieve the branch as of a particular revision, supply the --revision
 | 
|
1159  | 
    parameter, as in "checkout foo/bar -r 5". Note that this will be immediately
 | 
|
1160  | 
    out of date [so you cannot commit] but it may be useful (i.e. to examine old
 | 
|
1161  | 
    code.)
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1162  | 
    """
 | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1163  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1164  | 
_see_also = ['checkouts', 'branch']  | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1165  | 
takes_args = ['branch_location?', 'to_location?']  | 
| 
3984.3.5
by Daniel Watkins
 Changed from option type to helper function.  | 
1166  | 
takes_options = ['revision',  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
1167  | 
Option('lightweight',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
1168  | 
help="Perform a lightweight checkout. Lightweight "  | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
1169  | 
                                 "checkouts depend on access to the branch for "
 | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
1170  | 
                                 "every operation.  Normal checkouts can perform "
 | 
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
1171  | 
                                 "common operations like diff and status without "
 | 
1172  | 
                                 "such access, and also support local commits."
 | 
|
1173  | 
                            ),
 | 
|
| 
3136.1.3
by Aaron Bentley
 Implement hard-link support for branch and checkout  | 
1174  | 
Option('files-from', type=str,  | 
1175  | 
help="Get file contents from this tree."),  | 
|
1176  | 
Option('hardlink',  | 
|
1177  | 
help='Hard-link working tree files where possible.'  | 
|
1178  | 
                            ),
 | 
|
| 
1587.1.14
by Robert Collins
 Make bound branch creation happen via 'checkout'  | 
1179  | 
                     ]
 | 
| 
1733.2.8
by Michael Ellerman
 Add CVS compatible aliases for checkout and annotate, from fullermd.  | 
1180  | 
aliases = ['co']  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1181  | 
|
| 
2387.1.1
by Robert Collins
 Remove the --basis parameter to clone etc. (Robert Collins)  | 
1182  | 
def run(self, branch_location=None, to_location=None, revision=None,  | 
| 
3136.1.3
by Aaron Bentley
 Implement hard-link support for branch and checkout  | 
1183  | 
lightweight=False, files_from=None, hardlink=False):  | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1184  | 
if branch_location is None:  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1185  | 
branch_location = osutils.getcwd()  | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1186  | 
to_location = branch_location  | 
| 
3123.5.20
by Aaron Bentley
 Checkout uses branch tree as a fallback accelerator  | 
1187  | 
accelerator_tree, source = bzrdir.BzrDir.open_tree_or_branch(  | 
1188  | 
branch_location)  | 
|
| 
3984.3.7
by Daniel Watkins
 Fixed incorrect calls.  | 
1189  | 
revision = _get_one_revision('checkout', revision)  | 
| 
3123.5.20
by Aaron Bentley
 Checkout uses branch tree as a fallback accelerator  | 
1190  | 
if files_from is not None:  | 
1191  | 
accelerator_tree = WorkingTree.open(files_from)  | 
|
| 
3984.3.4
by Daniel Watkins
 Converted cmd_checkout to use 1revision.  | 
1192  | 
if revision is not None:  | 
1193  | 
revision_id = revision.as_revision_id(source)  | 
|
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1194  | 
else:  | 
1195  | 
revision_id = None  | 
|
1196  | 
if to_location is None:  | 
|
| 
2512.4.1
by Ian Clatworthy
 Fixes #115491 - 'branch lp:projname' now creates ./projname as exected  | 
1197  | 
to_location = urlutils.derive_to_location(branch_location)  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1198  | 
        # if the source and to_location are the same,
 | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1199  | 
        # and there is no working tree,
 | 
1200  | 
        # then reconstitute a branch
 | 
|
| 
1997.1.4
by Robert Collins
 ``bzr checkout --lightweight`` now operates on readonly branches as well  | 
1201  | 
if (osutils.abspath(to_location) ==  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1202  | 
osutils.abspath(branch_location)):  | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1203  | 
try:  | 
1204  | 
source.bzrdir.open_workingtree()  | 
|
1205  | 
except errors.NoWorkingTree:  | 
|
| 
1551.15.60
by Aaron Bentley
 bzr checkout -r always works, even with -r0 (#127708)  | 
1206  | 
source.bzrdir.create_workingtree(revision_id)  | 
| 
1508.1.28
by Robert Collins
 Test using bzr checkout to reconstitute working trees.  | 
1207  | 
                return
 | 
| 
3123.5.2
by Aaron Bentley
 Allow checkout --files_from  | 
1208  | 
source.create_checkout(to_location, revision_id, lightweight,  | 
| 
3136.1.3
by Aaron Bentley
 Implement hard-link support for branch and checkout  | 
1209  | 
accelerator_tree, hardlink)  | 
| 
1508.1.20
by Robert Collins
 Create a checkout command.  | 
1210  | 
|
1211  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1212  | 
class cmd_renames(Command):  | 
1213  | 
"""Show list of renamed files.  | 
|
1214  | 
    """
 | 
|
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1215  | 
    # TODO: Option to show renames between two historical versions.
 | 
1216  | 
||
1217  | 
    # TODO: Only show renames under dir, rather than in the whole branch.
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1218  | 
_see_also = ['status']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1219  | 
takes_args = ['dir?']  | 
1220  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1221  | 
    @display_command
 | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1222  | 
def run(self, dir=u'.'):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1223  | 
tree = WorkingTree.open_containing(dir)[0]  | 
| 
2255.7.63
by Robert Collins
 Fix cmd_renames to lock around inventory access.  | 
1224  | 
tree.lock_read()  | 
1225  | 
try:  | 
|
1226  | 
new_inv = tree.inventory  | 
|
1227  | 
old_tree = tree.basis_tree()  | 
|
1228  | 
old_tree.lock_read()  | 
|
1229  | 
try:  | 
|
1230  | 
old_inv = old_tree.inventory  | 
|
| 
1551.21.1
by Aaron Bentley
 Deprecate tree.find_renames  | 
1231  | 
renames = []  | 
1232  | 
iterator = tree.iter_changes(old_tree, include_unchanged=True)  | 
|
1233  | 
for f, paths, c, v, p, n, k, e in iterator:  | 
|
1234  | 
if paths[0] == paths[1]:  | 
|
1235  | 
                        continue
 | 
|
1236  | 
if None in (paths):  | 
|
1237  | 
                        continue
 | 
|
1238  | 
renames.append(paths)  | 
|
| 
2255.7.63
by Robert Collins
 Fix cmd_renames to lock around inventory access.  | 
1239  | 
renames.sort()  | 
1240  | 
for old_name, new_name in renames:  | 
|
1241  | 
self.outf.write("%s => %s\n" % (old_name, new_name))  | 
|
1242  | 
finally:  | 
|
1243  | 
old_tree.unlock()  | 
|
1244  | 
finally:  | 
|
1245  | 
tree.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1246  | 
|
1247  | 
||
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1248  | 
class cmd_update(Command):  | 
1249  | 
"""Update a tree to have the latest code committed to its branch.  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1250  | 
|
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1251  | 
    This will perform a merge into the working tree, and may generate
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1252  | 
    conflicts. If you have any local changes, you will still
 | 
| 
1587.1.10
by Robert Collins
 update updates working tree and branch together.  | 
1253  | 
    need to commit them after the update for the update to be complete.
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1254  | 
|
1255  | 
    If you want to discard your local changes, you can just do a
 | 
|
| 
1587.1.10
by Robert Collins
 update updates working tree and branch together.  | 
1256  | 
    'bzr revert' instead of 'bzr commit' after the update.
 | 
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1257  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1258  | 
|
| 
2625.5.1
by Daniel Watkins
 'bzr update's help now includes a see also reference to 'help status-flags'.  | 
1259  | 
_see_also = ['pull', 'working-trees', 'status-flags']  | 
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1260  | 
takes_args = ['dir?']  | 
| 
1815.3.1
by Stefan (metze) Metzmacher
 add 'up' as alias for 'update'  | 
1261  | 
aliases = ['up']  | 
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1262  | 
|
1263  | 
def run(self, dir='.'):  | 
|
1264  | 
tree = WorkingTree.open_containing(dir)[0]  | 
|
| 
2806.2.2
by Vincent Ladeuil
 Fix #128076 and #131396 by reusing bound branch transport.  | 
1265  | 
possible_transports = []  | 
1266  | 
master = tree.branch.get_master_branch(  | 
|
1267  | 
possible_transports=possible_transports)  | 
|
| 
2084.2.1
by Aaron Bentley
 Support updating lightweight checkouts of readonly branches  | 
1268  | 
if master is not None:  | 
1269  | 
tree.lock_write()  | 
|
1270  | 
else:  | 
|
1271  | 
tree.lock_tree_write()  | 
|
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1272  | 
try:  | 
| 
2014.1.1
by John Arbash Meinel
 Stop using pending_merges() in 'bzr update'  | 
1273  | 
existing_pending_merges = tree.get_parent_ids()[1:]  | 
| 
2598.5.4
by Aaron Bentley
 Restore original Branch.last_revision behavior, fix bits that care  | 
1274  | 
last_rev = _mod_revision.ensure_null(tree.last_revision())  | 
1275  | 
if last_rev == _mod_revision.ensure_null(  | 
|
1276  | 
tree.branch.last_revision()):  | 
|
| 
1587.1.11
by Robert Collins
 Local commits appear to be working properly.  | 
1277  | 
                # may be up to date, check master too.
 | 
| 
2598.5.4
by Aaron Bentley
 Restore original Branch.last_revision behavior, fix bits that care  | 
1278  | 
if master is None or last_rev == _mod_revision.ensure_null(  | 
1279  | 
master.last_revision()):  | 
|
| 
1830.1.1
by John Arbash Meinel
 Print up to date even if bound, also always print out current revno.  | 
1280  | 
revno = tree.branch.revision_id_to_revno(last_rev)  | 
1281  | 
note("Tree is up to date at revision %d." % (revno,))  | 
|
1282  | 
return 0  | 
|
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
1283  | 
view_info = _get_view_info_for_change_reporter(tree)  | 
| 
2806.2.2
by Vincent Ladeuil
 Fix #128076 and #131396 by reusing bound branch transport.  | 
1284  | 
conflicts = tree.update(  | 
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
1285  | 
delta._ChangeReporter(unversioned_filter=tree.is_ignored,  | 
1286  | 
view_info=view_info), possible_transports=possible_transports)  | 
|
| 
2598.5.4
by Aaron Bentley
 Restore original Branch.last_revision behavior, fix bits that care  | 
1287  | 
revno = tree.branch.revision_id_to_revno(  | 
1288  | 
_mod_revision.ensure_null(tree.last_revision()))  | 
|
| 
1830.1.1
by John Arbash Meinel
 Print up to date even if bound, also always print out current revno.  | 
1289  | 
note('Updated to revision %d.' % (revno,))  | 
| 
2014.1.1
by John Arbash Meinel
 Stop using pending_merges() in 'bzr update'  | 
1290  | 
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.  | 
1291  | 
note('Your local commits will now show as pending merges with '  | 
| 
1878.3.2
by Adeodato Simó
 Update with suggestions from John Arbash Meinel.  | 
1292  | 
"'bzr status', and can be committed with 'bzr commit'.")  | 
| 
1508.1.24
by Robert Collins
 Add update command for use with checkouts.  | 
1293  | 
if conflicts != 0:  | 
1294  | 
return 1  | 
|
1295  | 
else:  | 
|
1296  | 
return 0  | 
|
1297  | 
finally:  | 
|
1298  | 
tree.unlock()  | 
|
1299  | 
||
1300  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1301  | 
class cmd_info(Command):  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1302  | 
"""Show information about a working tree, branch or repository.  | 
1303  | 
||
1304  | 
    This command will show all known locations and formats associated to the
 | 
|
| 
4032.2.1
by Ian Clatworthy
 omit branch committers from info -v (now requires -vv)  | 
1305  | 
    tree, branch or repository.
 | 
| 
4035.1.2
by Ian Clatworthy
 clean-up trailing whitespace  | 
1306  | 
|
| 
4032.2.1
by Ian Clatworthy
 omit branch committers from info -v (now requires -vv)  | 
1307  | 
    In verbose mode, statistical information is included with each report.
 | 
1308  | 
    To see extended statistic information, use a verbosity level of 2 or
 | 
|
1309  | 
    higher by specifying the verbose option multiple times, e.g. -vv.
 | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1310  | 
|
1311  | 
    Branches and working trees will also report any missing revisions.
 | 
|
| 
4032.2.1
by Ian Clatworthy
 omit branch committers from info -v (now requires -vv)  | 
1312  | 
|
1313  | 
    :Examples:
 | 
|
1314  | 
||
1315  | 
      Display information on the format and related locations:
 | 
|
1316  | 
||
1317  | 
        bzr info
 | 
|
1318  | 
||
1319  | 
      Display the above together with extended format information and
 | 
|
1320  | 
      basic statistics (like the number of files in the working tree and
 | 
|
1321  | 
      number of revisions in the branch and repository):
 | 
|
1322  | 
||
| 
4217.3.1
by Ian Clatworthy
 fix info help  | 
1323  | 
        bzr info -v
 | 
| 
4032.2.1
by Ian Clatworthy
 omit branch committers from info -v (now requires -vv)  | 
1324  | 
|
1325  | 
      Display the above together with number of committers to the branch:
 | 
|
1326  | 
||
| 
4217.3.1
by Ian Clatworthy
 fix info help  | 
1327  | 
        bzr info -vv
 | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1328  | 
    """
 | 
| 
2485.1.2
by James Westby
 Update with comments from review, thanks to John and Aaron.  | 
1329  | 
_see_also = ['revno', 'working-trees', 'repositories']  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1330  | 
takes_args = ['location?']  | 
| 
1624.3.21
by Olaf Conradi
 Make bzr info command work on both local and remote locations. Support  | 
1331  | 
takes_options = ['verbose']  | 
| 
2904.3.1
by Lukáš Lalinský
 Unicode-safe output from ``bzr info``.  | 
1332  | 
encoding_type = 'replace'  | 
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1333  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1334  | 
    @display_command
 | 
| 
2768.1.8
by Ian Clatworthy
 Get test suite fully working again  | 
1335  | 
def run(self, location=None, verbose=False):  | 
1336  | 
if verbose:  | 
|
| 
4032.2.1
by Ian Clatworthy
 omit branch committers from info -v (now requires -vv)  | 
1337  | 
noise_level = get_verbosity_level()  | 
| 
2768.1.8
by Ian Clatworthy
 Get test suite fully working again  | 
1338  | 
else:  | 
1339  | 
noise_level = 0  | 
|
| 
1694.2.6
by Martin Pool
 [merge] bzr.dev  | 
1340  | 
from bzrlib.info import show_bzrdir_info  | 
1341  | 
show_bzrdir_info(bzrdir.BzrDir.open_containing(location)[0],  | 
|
| 
2904.3.1
by Lukáš Lalinský
 Unicode-safe output from ``bzr info``.  | 
1342  | 
verbose=noise_level, outfile=self.outf)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1343  | 
|
1344  | 
||
| 
2292.1.13
by Marius Kruger
 * merge the unversion command back into the remove command,  | 
1345  | 
class cmd_remove(Command):  | 
| 
2292.1.24
by Marius Kruger
 minor text cleanups  | 
1346  | 
"""Remove files or directories.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1347  | 
|
| 
3619.5.3
by Robert Collins
 Review feedback.  | 
1348  | 
    This makes bzr stop tracking changes to the specified files. bzr will delete
 | 
1349  | 
    them if they can easily be recovered using revert. If no options or
 | 
|
1350  | 
    parameters are given bzr will scan for files that are being tracked by bzr
 | 
|
1351  | 
    but missing in your tree and stop tracking them for you.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1352  | 
    """
 | 
| 
1551.6.26
by Aaron Bentley
 Add support for remove --new  | 
1353  | 
takes_args = ['file*']  | 
| 
2292.1.30
by Marius Kruger
 * Minor text fixes.  | 
1354  | 
takes_options = ['verbose',  | 
| 
3619.5.1
by Robert Collins
 * ``bzr rm`` will now scan for files that are missing and remove just  | 
1355  | 
Option('new', help='Only remove files that have never been committed.'),  | 
| 
2292.1.28
by Marius Kruger
 * NEWS  | 
1356  | 
RegistryOption.from_kwargs('file-deletion-strategy',  | 
| 
2681.1.7
by Aaron Bentley
 Fix option grammar  | 
1357  | 
'The file deletion mode to be used.',  | 
| 
2292.1.28
by Marius Kruger
 * NEWS  | 
1358  | 
title='Deletion Strategy', value_switches=True, enum_switch=False,  | 
| 
2292.1.30
by Marius Kruger
 * Minor text fixes.  | 
1359  | 
safe='Only delete files if they can be'  | 
1360  | 
' safely recovered (default).',  | 
|
| 
2292.1.28
by Marius Kruger
 * NEWS  | 
1361  | 
keep="Don't delete any files.",  | 
1362  | 
force='Delete all the specified files, even if they can not be '  | 
|
1363  | 
'recovered and even if they are non-empty directories.')]  | 
|
| 
3619.5.2
by Robert Collins
 * ``bzr rm`` is now aliased to ``bzr del`` for the convenience of svn  | 
1364  | 
aliases = ['rm', 'del']  | 
| 
1685.1.77
by Wouter van Heyst
 WorkingTree.remove takes an optional output file  | 
1365  | 
encoding_type = 'replace'  | 
| 
2292.1.1
by Marius Kruger
 "bzr remove" and "bzr rm" will now remove the working file.  | 
1366  | 
|
| 
2292.1.30
by Marius Kruger
 * Minor text fixes.  | 
1367  | 
def run(self, file_list, verbose=False, new=False,  | 
| 
2292.1.28
by Marius Kruger
 * NEWS  | 
1368  | 
file_deletion_strategy='safe'):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1369  | 
tree, file_list = tree_files(file_list)  | 
| 
2292.1.1
by Marius Kruger
 "bzr remove" and "bzr rm" will now remove the working file.  | 
1370  | 
|
| 
3794.5.38
by Mark Hammond
 Restore missing (apparently pointless) block accidently removed.  | 
1371  | 
if file_list is not None:  | 
1372  | 
file_list = [f for f in file_list]  | 
|
1373  | 
||
| 
3619.5.1
by Robert Collins
 * ``bzr rm`` will now scan for files that are missing and remove just  | 
1374  | 
tree.lock_write()  | 
1375  | 
try:  | 
|
1376  | 
            # Heuristics should probably all move into tree.remove_smart or
 | 
|
1377  | 
            # some such?
 | 
|
1378  | 
if new:  | 
|
1379  | 
added = tree.changes_from(tree.basis_tree(),  | 
|
1380  | 
specific_files=file_list).added  | 
|
1381  | 
file_list = sorted([f[0] for f in added], reverse=True)  | 
|
1382  | 
if len(file_list) == 0:  | 
|
1383  | 
raise errors.BzrCommandError('No matching files.')  | 
|
1384  | 
elif file_list is None:  | 
|
1385  | 
                # missing files show up in iter_changes(basis) as
 | 
|
1386  | 
                # versioned-with-no-kind.
 | 
|
1387  | 
missing = []  | 
|
1388  | 
for change in tree.iter_changes(tree.basis_tree()):  | 
|
| 
3619.5.3
by Robert Collins
 Review feedback.  | 
1389  | 
                    # Find paths in the working tree that have no kind:
 | 
1390  | 
if change[1][1] is not None and change[6][1] is None:  | 
|
| 
3619.5.1
by Robert Collins
 * ``bzr rm`` will now scan for files that are missing and remove just  | 
1391  | 
missing.append(change[1][1])  | 
1392  | 
file_list = sorted(missing, reverse=True)  | 
|
1393  | 
file_deletion_strategy = 'keep'  | 
|
1394  | 
tree.remove(file_list, verbose=verbose, to_file=self.outf,  | 
|
1395  | 
keep_files=file_deletion_strategy=='keep',  | 
|
1396  | 
force=file_deletion_strategy=='force')  | 
|
1397  | 
finally:  | 
|
1398  | 
tree.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1399  | 
|
1400  | 
||
1401  | 
class cmd_file_id(Command):  | 
|
1402  | 
"""Print file_id of a particular file or directory.  | 
|
1403  | 
||
1404  | 
    The file_id is assigned when the file is first added and remains the
 | 
|
1405  | 
    same through all revisions where the file exists, even when it is
 | 
|
1406  | 
    moved or renamed.
 | 
|
1407  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1408  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1409  | 
hidden = True  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1410  | 
_see_also = ['inventory', 'ls']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1411  | 
takes_args = ['filename']  | 
| 
1185.85.35
by John Arbash Meinel
 Updated file-path  | 
1412  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1413  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1414  | 
def run(self, filename):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1415  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
| 
2255.7.39
by Robert Collins
 Remove gratuitous references to inventory.path2id from builtins.py, allowing more commands to work on dirstate trees.  | 
1416  | 
i = tree.path2id(relpath)  | 
| 
1963.2.6
by Robey Pointer
 pychecker is on crack; go back to using 'is None'.  | 
1417  | 
if i is None:  | 
| 
2067.3.1
by Martin Pool
 Clean up BzrNewError, other exception classes and users.  | 
1418  | 
raise errors.NotVersionedError(filename)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1419  | 
else:  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1420  | 
self.outf.write(i + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1421  | 
|
1422  | 
||
1423  | 
class cmd_file_path(Command):  | 
|
1424  | 
"""Print path of file_ids to a file or directory.  | 
|
1425  | 
||
1426  | 
    This prints one line for each directory down to the target,
 | 
|
| 
1185.85.35
by John Arbash Meinel
 Updated file-path  | 
1427  | 
    starting at the branch root.
 | 
1428  | 
    """
 | 
|
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1429  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1430  | 
hidden = True  | 
1431  | 
takes_args = ['filename']  | 
|
| 
1185.85.35
by John Arbash Meinel
 Updated file-path  | 
1432  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1433  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1434  | 
def run(self, filename):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1435  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
| 
2255.7.39
by Robert Collins
 Remove gratuitous references to inventory.path2id from builtins.py, allowing more commands to work on dirstate trees.  | 
1436  | 
fid = tree.path2id(relpath)  | 
| 
1963.2.6
by Robey Pointer
 pychecker is on crack; go back to using 'is None'.  | 
1437  | 
if fid is None:  | 
| 
2067.3.1
by Martin Pool
 Clean up BzrNewError, other exception classes and users.  | 
1438  | 
raise errors.NotVersionedError(filename)  | 
| 
2255.7.39
by Robert Collins
 Remove gratuitous references to inventory.path2id from builtins.py, allowing more commands to work on dirstate trees.  | 
1439  | 
segments = osutils.splitpath(relpath)  | 
1440  | 
for pos in range(1, len(segments) + 1):  | 
|
1441  | 
path = osutils.joinpath(segments[:pos])  | 
|
1442  | 
self.outf.write("%s\n" % tree.path2id(path))  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1443  | 
|
1444  | 
||
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
1445  | 
class cmd_reconcile(Command):  | 
1446  | 
"""Reconcile bzr metadata in a branch.  | 
|
1447  | 
||
1448  | 
    This can correct data mismatches that may have been caused by
 | 
|
1449  | 
    previous ghost operations or bzr upgrades. You should only
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1450  | 
    need to run this command if 'bzr check' or a bzr developer
 | 
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
1451  | 
    advises you to run it.
 | 
1452  | 
||
1453  | 
    If a second branch is provided, cross-branch reconciliation is
 | 
|
1454  | 
    also attempted, which will check that data like the tree root
 | 
|
1455  | 
    id which was not present in very early bzr versions is represented
 | 
|
1456  | 
    correctly in both branches.
 | 
|
1457  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1458  | 
    At the same time it is run it may recompress data resulting in
 | 
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
1459  | 
    a potential saving in disk space or performance gain.
 | 
1460  | 
||
1461  | 
    The branch *MUST* be on a listable system such as local disk or sftp.
 | 
|
1462  | 
    """
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1463  | 
|
1464  | 
_see_also = ['check']  | 
|
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
1465  | 
takes_args = ['branch?']  | 
1466  | 
||
1467  | 
def run(self, branch="."):  | 
|
1468  | 
from bzrlib.reconcile import reconcile  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
1469  | 
dir = bzrdir.BzrDir.open(branch)  | 
| 
1570.1.2
by Robert Collins
 Import bzrtools' 'fix' command as 'bzr reconcile.'  | 
1470  | 
reconcile(dir)  | 
1471  | 
||
1472  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1473  | 
class cmd_revision_history(Command):  | 
| 
1733.2.1
by Michael Ellerman
 Add an optional location parameter to the 'revision-history' command.  | 
1474  | 
"""Display the list of revision ids on a branch."""  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1475  | 
|
1476  | 
_see_also = ['log']  | 
|
| 
1733.2.1
by Michael Ellerman
 Add an optional location parameter to the 'revision-history' command.  | 
1477  | 
takes_args = ['location?']  | 
1478  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1479  | 
hidden = True  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
1480  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1481  | 
    @display_command
 | 
| 
1733.2.1
by Michael Ellerman
 Add an optional location parameter to the 'revision-history' command.  | 
1482  | 
def run(self, location="."):  | 
1483  | 
branch = Branch.open_containing(location)[0]  | 
|
1484  | 
for revid in branch.revision_history():  | 
|
| 
1733.2.4
by Michael Ellerman
 Merge bzr.dev, fix minor conflict in cmd_revision_history().  | 
1485  | 
self.outf.write(revid)  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
1486  | 
self.outf.write('\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1487  | 
|
1488  | 
||
| 
1225
by Martin Pool
 - branch now tracks ancestry - all merged revisions  | 
1489  | 
class cmd_ancestry(Command):  | 
1490  | 
"""List all revisions merged into this branch."""  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1491  | 
|
1492  | 
_see_also = ['log', 'revision-history']  | 
|
| 
1733.2.2
by Michael Ellerman
 Add optional location to ancestry and fix behaviour for checkouts.  | 
1493  | 
takes_args = ['location?']  | 
1494  | 
||
| 
1225
by Martin Pool
 - branch now tracks ancestry - all merged revisions  | 
1495  | 
hidden = True  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
1496  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1497  | 
    @display_command
 | 
| 
1733.2.2
by Michael Ellerman
 Add optional location to ancestry and fix behaviour for checkouts.  | 
1498  | 
def run(self, location="."):  | 
1499  | 
try:  | 
|
1500  | 
wt = WorkingTree.open_containing(location)[0]  | 
|
1501  | 
except errors.NoWorkingTree:  | 
|
1502  | 
b = Branch.open(location)  | 
|
1503  | 
last_revision = b.last_revision()  | 
|
1504  | 
else:  | 
|
1505  | 
b = wt.branch  | 
|
1506  | 
last_revision = wt.last_revision()  | 
|
1507  | 
||
1508  | 
revision_ids = b.repository.get_ancestry(last_revision)  | 
|
| 
1668.1.14
by Martin Pool
 merge olaf - InvalidRevisionId fixes  | 
1509  | 
revision_ids.pop(0)  | 
1510  | 
for revision_id in revision_ids:  | 
|
| 
1685.1.69
by Wouter van Heyst
 merge bzr.dev 1740  | 
1511  | 
self.outf.write(revision_id + '\n')  | 
| 
1225
by Martin Pool
 - branch now tracks ancestry - all merged revisions  | 
1512  | 
|
1513  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1514  | 
class cmd_init(Command):  | 
1515  | 
"""Make a directory into a versioned branch.  | 
|
1516  | 
||
1517  | 
    Use this to create an empty branch, or before importing an
 | 
|
1518  | 
    existing project.
 | 
|
1519  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1520  | 
    If there is a repository in a parent directory of the location, then
 | 
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1521  | 
    the history of the branch will be stored in the repository.  Otherwise
 | 
| 
2374.1.2
by Ian Clatworthy
 Improved after feedback from reviewers  | 
1522  | 
    init creates a standalone branch which carries its own history
 | 
1523  | 
    in the .bzr directory.
 | 
|
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1524  | 
|
1525  | 
    If there is already a branch at the location but it has no working tree,
 | 
|
1526  | 
    the tree can be populated with 'bzr checkout'.
 | 
|
1527  | 
||
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
1528  | 
    Recipe for importing a tree of files::
 | 
1529  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1530  | 
        cd ~/project
 | 
1531  | 
        bzr init
 | 
|
| 
1185.12.93
by Aaron Bentley
 Fixed obsolete help  | 
1532  | 
        bzr add .
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1533  | 
        bzr status
 | 
| 
3035.1.1
by John Arbash Meinel
 Address bug #59302 and fix documentation that uses single quotes.  | 
1534  | 
        bzr commit -m "imported project"
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1535  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1536  | 
|
| 
2677.1.2
by Alexander Belchenko
 bzr_man: see also topics as cross-reference links  | 
1537  | 
_see_also = ['init-repository', 'branch', 'checkout']  | 
| 
1185.16.138
by Martin Pool
 [patch] 'bzr init DIR' (John)  | 
1538  | 
takes_args = ['location?']  | 
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
1539  | 
takes_options = [  | 
| 
2524.1.1
by Aaron Bentley
 Revert broken changes  | 
1540  | 
Option('create-prefix',  | 
1541  | 
help='Create the path leading up to the branch '  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
1542  | 
'if it does not already exist.'),  | 
| 
2241.1.4
by Martin Pool
 Moved old weave-based repository formats into bzrlib.repofmt.weaverepo.  | 
1543  | 
RegistryOption('format',  | 
1544  | 
help='Specify a format for this branch. '  | 
|
1545  | 
'See "help formats".',  | 
|
| 
3224.5.2
by Andrew Bennetts
 Avoid importing bzrlib.bzrdir unnecessarily.  | 
1546  | 
lazy_registry=('bzrlib.bzrdir', 'format_registry'),  | 
1547  | 
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),  | 
|
| 
2241.1.19
by mbp at sourcefrog
 (merge) trunk  | 
1548  | 
value_switches=True,  | 
1549  | 
title="Branch Format",  | 
|
1550  | 
                ),
 | 
|
| 
2230.3.42
by Aaron Bentley
 add --append-revisions-only option to init  | 
1551  | 
Option('append-revisions-only',  | 
1552  | 
help='Never change revnos or the existing log.'  | 
|
1553  | 
' Append revisions to it only.')  | 
|
| 
2241.1.4
by Martin Pool
 Moved old weave-based repository formats into bzrlib.repofmt.weaverepo.  | 
1554  | 
         ]
 | 
| 
2524.1.1
by Aaron Bentley
 Revert broken changes  | 
1555  | 
def run(self, location=None, format=None, append_revisions_only=False,  | 
1556  | 
create_prefix=False):  | 
|
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
1557  | 
if format is None:  | 
| 
2204.5.5
by Aaron Bentley
 Remove RepositoryFormat.set_default_format, deprecate get_format_type  | 
1558  | 
format = bzrdir.format_registry.make_bzrdir('default')  | 
| 
1185.16.138
by Martin Pool
 [patch] 'bzr init DIR' (John)  | 
1559  | 
if location is None:  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1560  | 
location = u'.'  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1561  | 
|
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1562  | 
to_transport = transport.get_transport(location)  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1563  | 
|
1564  | 
        # The path has to exist to initialize a
 | 
|
1565  | 
        # branch inside of it.
 | 
|
1566  | 
        # Just using os.mkdir, since I don't
 | 
|
1567  | 
        # believe that we want to create a bunch of
 | 
|
1568  | 
        # locations if the user supplies an extended path
 | 
|
| 
2524.1.1
by Aaron Bentley
 Revert broken changes  | 
1569  | 
try:  | 
1570  | 
to_transport.ensure_base()  | 
|
1571  | 
except errors.NoSuchFile:  | 
|
1572  | 
if not create_prefix:  | 
|
1573  | 
raise errors.BzrCommandError("Parent directory of %s"  | 
|
1574  | 
                    " does not exist."
 | 
|
1575  | 
"\nYou may supply --create-prefix to create all"  | 
|
1576  | 
                    " leading parent directories."
 | 
|
1577  | 
% location)  | 
|
1578  | 
_create_prefix(to_transport)  | 
|
| 
2504.1.3
by Daniel Watkins
 Implemented --create-prefix for 'init'.  | 
1579  | 
|
| 
1654.1.4
by Robert Collins
 Teach `bzr init` how to init at the root of a repository.  | 
1580  | 
try:  | 
| 
3697.5.4
by John Arbash Meinel
 Merge vila's init[-repo] changes and add a NEWS entry.  | 
1581  | 
a_bzrdir = bzrdir.BzrDir.open_from_transport(to_transport)  | 
| 
1996.3.34
by John Arbash Meinel
 Update builtins to use errors.foo. Now errors can be avoided entirely for a bzr rocks run  | 
1582  | 
except errors.NotBranchError:  | 
| 
1662.1.19
by Martin Pool
 Better error message when initting existing tree  | 
1583  | 
            # really a NotBzrDir error...
 | 
| 
2476.3.11
by Vincent Ladeuil
 Cosmetic changes.  | 
1584  | 
create_branch = bzrdir.BzrDir.create_branch_convenience  | 
| 
2476.3.6
by Vincent Ladeuil
 Fix the 'init connects multiple times' in a different way.  | 
1585  | 
branch = create_branch(to_transport.base, format=format,  | 
| 
2476.3.8
by Vincent Ladeuil
 Mark transports that need to be instrumented or refactored to check  | 
1586  | 
possible_transports=[to_transport])  | 
| 
3697.5.4
by John Arbash Meinel
 Merge vila's init[-repo] changes and add a NEWS entry.  | 
1587  | 
a_bzrdir = branch.bzrdir  | 
| 
1654.1.4
by Robert Collins
 Teach `bzr init` how to init at the root of a repository.  | 
1588  | 
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  | 
1589  | 
from bzrlib.transport.local import LocalTransport  | 
| 
3697.5.4
by John Arbash Meinel
 Merge vila's init[-repo] changes and add a NEWS entry.  | 
1590  | 
if a_bzrdir.has_branch():  | 
| 
1830.4.8
by Wouter van Heyst
 clean up imports (and get if collapsing right)  | 
1591  | 
if (isinstance(to_transport, LocalTransport)  | 
| 
3697.5.4
by John Arbash Meinel
 Merge vila's init[-repo] changes and add a NEWS entry.  | 
1592  | 
and not a_bzrdir.has_workingtree()):  | 
| 
1830.4.1
by Wouter van Heyst
 Allow bzr init to create remote branches  | 
1593  | 
raise errors.BranchExistsWithoutWorkingTree(location)  | 
1594  | 
raise errors.AlreadyBranchError(location)  | 
|
| 
3697.5.4
by John Arbash Meinel
 Merge vila's init[-repo] changes and add a NEWS entry.  | 
1595  | 
branch = a_bzrdir.create_branch()  | 
1596  | 
a_bzrdir.create_workingtree()  | 
|
| 
2230.3.42
by Aaron Bentley
 add --append-revisions-only option to init  | 
1597  | 
if append_revisions_only:  | 
1598  | 
try:  | 
|
1599  | 
branch.set_append_revisions_only(True)  | 
|
1600  | 
except errors.UpgradeRequired:  | 
|
1601  | 
raise errors.BzrCommandError('This branch format cannot be set'  | 
|
1602  | 
' to append-revisions-only. Try --experimental-branch6')  | 
|
| 
3535.9.1
by Marius Kruger
 print info after init and init-repo  | 
1603  | 
if not is_quiet():  | 
| 
3922.2.1
by Marius Kruger
 make `bzr init` less verbose, and update tests  | 
1604  | 
from bzrlib.info import describe_layout, describe_format  | 
1605  | 
try:  | 
|
1606  | 
tree = a_bzrdir.open_workingtree(recommend_upgrade=False)  | 
|
1607  | 
except (errors.NoWorkingTree, errors.NotLocalUrl):  | 
|
1608  | 
tree = None  | 
|
1609  | 
repository = branch.repository  | 
|
1610  | 
layout = describe_layout(repository, branch, tree).lower()  | 
|
1611  | 
format = describe_format(a_bzrdir, repository, branch, tree)  | 
|
1612  | 
self.outf.write("Created a %s (format: %s)\n" % (layout, format))  | 
|
1613  | 
if repository.is_shared():  | 
|
1614  | 
                #XXX: maybe this can be refactored into transport.path_or_url()
 | 
|
1615  | 
url = repository.bzrdir.root_transport.external_url()  | 
|
1616  | 
try:  | 
|
1617  | 
url = urlutils.local_path_from_url(url)  | 
|
1618  | 
except errors.InvalidURL:  | 
|
1619  | 
                    pass
 | 
|
1620  | 
self.outf.write("Using shared repository: %s\n" % url)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1621  | 
|
1622  | 
||
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
1623  | 
class cmd_init_repository(Command):  | 
| 
1658.1.6
by Martin Pool
 init-repo shouldn't insist on creating a new directory (Malone #38331)  | 
1624  | 
"""Create a shared repository to hold branches.  | 
1625  | 
||
| 
2485.1.2
by James Westby
 Update with comments from review, thanks to John and Aaron.  | 
1626  | 
    New branches created under the repository directory will store their
 | 
1627  | 
    revisions in the repository, not in the branch directory.
 | 
|
1628  | 
||
1629  | 
    If the --no-trees option is used then the branches in the repository
 | 
|
1630  | 
    will not have working trees by default.
 | 
|
| 
1658.1.6
by Martin Pool
 init-repo shouldn't insist on creating a new directory (Malone #38331)  | 
1631  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
1632  | 
    :Examples:
 | 
1633  | 
        Create a shared repositories holding just branches::
 | 
|
1634  | 
||
1635  | 
            bzr init-repo --no-trees repo
 | 
|
1636  | 
            bzr init repo/trunk
 | 
|
1637  | 
||
1638  | 
        Make a lightweight checkout elsewhere::
 | 
|
1639  | 
||
1640  | 
            bzr checkout --lightweight repo/trunk trunk-checkout
 | 
|
1641  | 
            cd trunk-checkout
 | 
|
1642  | 
            (add files here)
 | 
|
| 
1658.1.6
by Martin Pool
 init-repo shouldn't insist on creating a new directory (Malone #38331)  | 
1643  | 
    """
 | 
| 
2353.2.1
by John Arbash Meinel
 (Wouter van Heyst) switch 'bzr init-repo' to default to '--no-trees'  | 
1644  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
1645  | 
_see_also = ['init', 'branch', 'checkout', 'repositories']  | 
| 
2241.1.4
by Martin Pool
 Moved old weave-based repository formats into bzrlib.repofmt.weaverepo.  | 
1646  | 
takes_args = ["location"]  | 
| 
2221.4.9
by Aaron Bentley
 Zap trailing whitespace  | 
1647  | 
takes_options = [RegistryOption('format',  | 
| 
2221.4.12
by Aaron Bentley
 Add option grouping to RegistryOption and clean up format options  | 
1648  | 
help='Specify a format for this repository. See'  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
1649  | 
' "bzr help formats" for details.',  | 
| 
3224.5.2
by Andrew Bennetts
 Avoid importing bzrlib.bzrdir unnecessarily.  | 
1650  | 
lazy_registry=('bzrlib.bzrdir', 'format_registry'),  | 
1651  | 
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),  | 
|
| 
2221.4.12
by Aaron Bentley
 Add option grouping to RegistryOption and clean up format options  | 
1652  | 
value_switches=True, title='Repository format'),  | 
| 
2257.2.1
by Wouter van Heyst
 Change the ui level default for init-repo to --trees.  | 
1653  | 
Option('no-trees',  | 
| 
2353.2.1
by John Arbash Meinel
 (Wouter van Heyst) switch 'bzr init-repo' to default to '--no-trees'  | 
1654  | 
help='Branches in the repository will default to'  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
1655  | 
' not having a working tree.'),  | 
| 
2353.2.1
by John Arbash Meinel
 (Wouter van Heyst) switch 'bzr init-repo' to default to '--no-trees'  | 
1656  | 
                    ]
 | 
| 
1558.5.6
by Aaron Bentley
 Renamed make-repo init-repo  | 
1657  | 
aliases = ["init-repo"]  | 
| 
2353.2.1
by John Arbash Meinel
 (Wouter van Heyst) switch 'bzr init-repo' to default to '--no-trees'  | 
1658  | 
|
| 
2257.2.2
by Wouter van Heyst
 Actually test that `bzr init-repo --{no,}-trees` still works  | 
1659  | 
def run(self, location, format=None, no_trees=False):  | 
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
1660  | 
if format is None:  | 
| 
2204.5.5
by Aaron Bentley
 Remove RepositoryFormat.set_default_format, deprecate get_format_type  | 
1661  | 
format = bzrdir.format_registry.make_bzrdir('default')  | 
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
1662  | 
|
1663  | 
if location is None:  | 
|
1664  | 
location = '.'  | 
|
1665  | 
||
| 
1830.4.7
by Wouter van Heyst
 review fixes, rename transport variable to to_transport  | 
1666  | 
to_transport = transport.get_transport(location)  | 
| 
2475.3.3
by John Arbash Meinel
 Change calls to try/mkdir('.')/except FileExists to ensure_base()  | 
1667  | 
to_transport.ensure_base()  | 
| 
1830.4.5
by Wouter van Heyst
 cleanup  | 
1668  | 
|
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
1669  | 
newdir = format.initialize_on_transport(to_transport)  | 
| 
1558.5.2
by Aaron Bentley
 Created *shared* repositories...  | 
1670  | 
repo = newdir.create_repository(shared=True)  | 
| 
2257.2.2
by Wouter van Heyst
 Actually test that `bzr init-repo --{no,}-trees` still works  | 
1671  | 
repo.set_make_working_trees(not no_trees)  | 
| 
3535.9.1
by Marius Kruger
 print info after init and init-repo  | 
1672  | 
if not is_quiet():  | 
1673  | 
from bzrlib.info import show_bzrdir_info  | 
|
| 
3697.5.4
by John Arbash Meinel
 Merge vila's init[-repo] changes and add a NEWS entry.  | 
1674  | 
show_bzrdir_info(repo.bzrdir, verbose=0, outfile=self.outf)  | 
| 
1558.5.1
by Aaron Bentley
 Added make-repository command  | 
1675  | 
|
1676  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1677  | 
class cmd_diff(Command):  | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1678  | 
"""Show differences in the working tree, between revisions or branches.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1679  | 
|
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1680  | 
    If no arguments are given, all changes for the current tree are listed.
 | 
1681  | 
    If files are given, only the changes in those files are listed.
 | 
|
1682  | 
    Remote and multiple branches can be compared by using the --old and
 | 
|
1683  | 
    --new options. If not provided, the default for both is derived from
 | 
|
1684  | 
    the first argument, if any, or the current tree if no arguments are
 | 
|
1685  | 
    given.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1686  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1687  | 
    "bzr diff -p1" is equivalent to "bzr diff --prefix old/:new/", and
 | 
1688  | 
    produces patches suitable for "patch -p1".
 | 
|
1689  | 
||
| 
2961.2.1
by Guillermo Gonzalez
 * fix Bug #147938 (add exit values reference for cmd_diff help)  | 
1690  | 
    :Exit values:
 | 
1691  | 
        1 - changed
 | 
|
1692  | 
        2 - unrepresentable changes
 | 
|
1693  | 
        3 - error
 | 
|
1694  | 
        0 - no change
 | 
|
1695  | 
||
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
1696  | 
    :Examples:
 | 
1697  | 
        Shows the difference in the working tree versus the last commit::
 | 
|
1698  | 
||
1699  | 
            bzr diff
 | 
|
1700  | 
||
1701  | 
        Difference between the working tree and revision 1::
 | 
|
1702  | 
||
1703  | 
            bzr diff -r1
 | 
|
1704  | 
||
1705  | 
        Difference between revision 2 and revision 1::
 | 
|
1706  | 
||
1707  | 
            bzr diff -r1..2
 | 
|
1708  | 
||
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1709  | 
        Difference between revision 2 and revision 1 for branch xxx::
 | 
1710  | 
||
1711  | 
            bzr diff -r1..2 xxx
 | 
|
1712  | 
||
1713  | 
        Show just the differences for file NEWS::
 | 
|
1714  | 
||
1715  | 
            bzr diff NEWS
 | 
|
1716  | 
||
1717  | 
        Show the differences in working tree xxx for file NEWS::
 | 
|
1718  | 
||
1719  | 
            bzr diff xxx/NEWS
 | 
|
1720  | 
||
1721  | 
        Show the differences from branch xxx to this working tree:
 | 
|
1722  | 
||
1723  | 
            bzr diff --old xxx
 | 
|
1724  | 
||
1725  | 
        Show the differences between two branches for file NEWS::
 | 
|
1726  | 
||
| 
3072.1.4
by Ian Clatworthy
 Tweak help  | 
1727  | 
            bzr diff --old xxx --new yyy NEWS
 | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1728  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
1729  | 
        Same as 'bzr diff' but prefix paths with old/ and new/::
 | 
1730  | 
||
1731  | 
            bzr diff --prefix old/:new/
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1732  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1733  | 
_see_also = ['status']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1734  | 
takes_args = ['file*']  | 
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
1735  | 
takes_options = [  | 
| 
2598.1.11
by Martin Pool
 Insist that all options have a help string and fix those that don't.  | 
1736  | 
Option('diff-options', type=str,  | 
1737  | 
help='Pass these options to the external diff program.'),  | 
|
| 
2193.3.1
by Martin Pool
 Finish removal of global short-option table  | 
1738  | 
Option('prefix', type=str,  | 
1739  | 
short_name='p',  | 
|
| 
2852.1.1
by Vincent Ladeuil
 Fix typo.  | 
1740  | 
help='Set prefixes added to old and new filenames, as '  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
1741  | 
'two values separated by a colon. (eg "old/:new/").'),  | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1742  | 
Option('old',  | 
| 
3118.1.2
by Ian Clatworthy
 diff on branches without working trees (Ian Clatworthy, #6700)  | 
1743  | 
help='Branch/tree to compare from.',  | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1744  | 
type=unicode,  | 
1745  | 
            ),
 | 
|
1746  | 
Option('new',  | 
|
| 
3118.1.2
by Ian Clatworthy
 diff on branches without working trees (Ian Clatworthy, #6700)  | 
1747  | 
help='Branch/tree to compare to.',  | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1748  | 
type=unicode,  | 
1749  | 
            ),
 | 
|
| 
2598.1.11
by Martin Pool
 Insist that all options have a help string and fix those that don't.  | 
1750  | 
'revision',  | 
| 
2745.4.1
by Lukáš Lalinsky
 New option -C/--change for diff and status to show changes in one revision. (#56299)  | 
1751  | 
'change',  | 
| 
3123.6.2
by Aaron Bentley
 Implement diff --using natively  | 
1752  | 
Option('using',  | 
1753  | 
help='Use this command to compare files.',  | 
|
1754  | 
type=unicode,  | 
|
1755  | 
            ),
 | 
|
| 
2190.2.1
by Martin Pool
 remove global registration of short options  | 
1756  | 
        ]
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1757  | 
aliases = ['di', 'dif']  | 
| 
1185.85.36
by John Arbash Meinel
 Working on tests for revision-history, ancestry, and diff  | 
1758  | 
encoding_type = 'exact'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1759  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1760  | 
    @display_command
 | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1761  | 
def run(self, revision=None, file_list=None, diff_options=None,  | 
| 
3123.6.2
by Aaron Bentley
 Implement diff --using natively  | 
1762  | 
prefix=None, old=None, new=None, using=None):  | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1763  | 
from bzrlib.diff import _get_trees_to_diff, show_diff_trees  | 
| 
1684.1.6
by Martin Pool
 (patch) --diff-prefix option (goffredo, alexander)  | 
1764  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1765  | 
if (prefix is None) or (prefix == '0'):  | 
1766  | 
            # diff -p0 format
 | 
|
| 
1694.2.1
by Martin Pool
 Remove 'a/', 'b/' default prefixes on diff output.  | 
1767  | 
old_label = ''  | 
1768  | 
new_label = ''  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1769  | 
elif prefix == '1':  | 
1770  | 
old_label = 'old/'  | 
|
1771  | 
new_label = 'new/'  | 
|
| 
2197.2.1
by Martin Pool
 Refactor cmd_diff  | 
1772  | 
elif ':' in prefix:  | 
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
1773  | 
old_label, new_label = prefix.split(":")  | 
| 
2197.2.1
by Martin Pool
 Refactor cmd_diff  | 
1774  | 
else:  | 
| 
2324.1.1
by Dmitry Vasiliev
 Small fixes for bzr diff  | 
1775  | 
raise errors.BzrCommandError(  | 
| 
2325.1.2
by John Arbash Meinel
 Add (eg "old/:new/") to errors to make it a little clearer.  | 
1776  | 
                '--prefix expects two values separated by a colon'
 | 
1777  | 
' (eg "old/:new/")')  | 
|
| 
2197.2.1
by Martin Pool
 Refactor cmd_diff  | 
1778  | 
|
| 
2745.4.2
by Lukáš Lalinsky
 Allow options to be stored in attributes that differ from their 'name' and use this to let '--change' and '--revision' to override each other.  | 
1779  | 
if revision and len(revision) > 2:  | 
1780  | 
raise errors.BzrCommandError('bzr diff --revision takes exactly'  | 
|
1781  | 
' one or two revision specifiers')  | 
|
| 
2325.1.2
by John Arbash Meinel
 Add (eg "old/:new/") to errors to make it a little clearer.  | 
1782  | 
|
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1783  | 
old_tree, new_tree, specific_files, extra_trees = \  | 
| 
3586.1.21
by Ian Clatworthy
 enhance diff to support views  | 
1784  | 
_get_trees_to_diff(file_list, revision, old, new,  | 
1785  | 
apply_view=True)  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
1786  | 
return show_diff_trees(old_tree, new_tree, sys.stdout,  | 
| 
3072.1.1
by Ian Clatworthy
 Improved diff based on feedback from abentley  | 
1787  | 
specific_files=specific_files,  | 
1788  | 
external_diff_options=diff_options,  | 
|
1789  | 
old_label=old_label, new_label=new_label,  | 
|
| 
3123.6.2
by Aaron Bentley
 Implement diff --using natively  | 
1790  | 
extra_trees=extra_trees, using=using)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1791  | 
|
1792  | 
||
1793  | 
class cmd_deleted(Command):  | 
|
1794  | 
"""List files deleted in the working tree.  | 
|
1795  | 
    """
 | 
|
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
1796  | 
    # TODO: Show files deleted since a previous revision, or
 | 
1797  | 
    # between two revisions.
 | 
|
1798  | 
    # TODO: Much more efficient way to do this: read in new
 | 
|
1799  | 
    # directories with readdir, rather than stating each one.  Same
 | 
|
1800  | 
    # level of effort but possibly much less IO.  (Or possibly not,
 | 
|
1801  | 
    # if the directories are very large...)
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1802  | 
_see_also = ['status', 'ls']  | 
| 
1185.85.49
by John Arbash Meinel
 Updated cmd_deleted, including adding --show-ids option.  | 
1803  | 
takes_options = ['show-ids']  | 
1804  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1805  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1806  | 
def run(self, show_ids=False):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1807  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
2255.7.72
by Robert Collins
 Update cmd_deleted to lock around inventory access.  | 
1808  | 
tree.lock_read()  | 
1809  | 
try:  | 
|
1810  | 
old = tree.basis_tree()  | 
|
1811  | 
old.lock_read()  | 
|
1812  | 
try:  | 
|
1813  | 
for path, ie in old.inventory.iter_entries():  | 
|
1814  | 
if not tree.has_id(ie.file_id):  | 
|
1815  | 
self.outf.write(path)  | 
|
1816  | 
if show_ids:  | 
|
1817  | 
self.outf.write(' ')  | 
|
1818  | 
self.outf.write(ie.file_id)  | 
|
1819  | 
self.outf.write('\n')  | 
|
1820  | 
finally:  | 
|
1821  | 
old.unlock()  | 
|
1822  | 
finally:  | 
|
1823  | 
tree.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1824  | 
|
1825  | 
||
1826  | 
class cmd_modified(Command):  | 
|
| 
1551.10.13
by Aaron Bentley
 Hide 'unknowns', document alterntatives to hidden commands  | 
1827  | 
"""List files modified in working tree.  | 
1828  | 
    """
 | 
|
| 
1551.10.14
by Aaron Bentley
 Add some blank lines  | 
1829  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1830  | 
hidden = True  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1831  | 
_see_also = ['status', 'ls']  | 
| 
3251.6.2
by Adrian Wilkins
 Added null separation option for bzr modified and bzr added  | 
1832  | 
takes_options = [  | 
1833  | 
Option('null',  | 
|
1834  | 
help='Write an ascii NUL (\\0) separator '  | 
|
1835  | 
'between files rather than a newline.')  | 
|
1836  | 
            ]
 | 
|
| 
1551.10.14
by Aaron Bentley
 Add some blank lines  | 
1837  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1838  | 
    @display_command
 | 
| 
3251.6.2
by Adrian Wilkins
 Added null separation option for bzr modified and bzr added  | 
1839  | 
def run(self, null=False):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1840  | 
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.  | 
1841  | 
td = tree.changes_from(tree.basis_tree())  | 
| 
1398
by Robert Collins
 integrate in Gustavos x-bit patch  | 
1842  | 
for path, id, kind, text_modified, meta_modified in td.modified:  | 
| 
3251.6.2
by Adrian Wilkins
 Added null separation option for bzr modified and bzr added  | 
1843  | 
if null:  | 
1844  | 
self.outf.write(path + '\0')  | 
|
1845  | 
else:  | 
|
1846  | 
self.outf.write(osutils.quotefn(path) + '\n')  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1847  | 
|
1848  | 
||
1849  | 
class cmd_added(Command):  | 
|
| 
1551.10.13
by Aaron Bentley
 Hide 'unknowns', document alterntatives to hidden commands  | 
1850  | 
"""List files added in working tree.  | 
1851  | 
    """
 | 
|
| 
1551.10.14
by Aaron Bentley
 Add some blank lines  | 
1852  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1853  | 
hidden = True  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1854  | 
_see_also = ['status', 'ls']  | 
| 
3251.6.2
by Adrian Wilkins
 Added null separation option for bzr modified and bzr added  | 
1855  | 
takes_options = [  | 
1856  | 
Option('null',  | 
|
1857  | 
help='Write an ascii NUL (\\0) separator '  | 
|
1858  | 
'between files rather than a newline.')  | 
|
1859  | 
            ]
 | 
|
| 
1551.10.14
by Aaron Bentley
 Add some blank lines  | 
1860  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1861  | 
    @display_command
 | 
| 
3251.6.2
by Adrian Wilkins
 Added null separation option for bzr modified and bzr added  | 
1862  | 
def run(self, null=False):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
1863  | 
wt = WorkingTree.open_containing(u'.')[0]  | 
| 
2255.7.69
by Robert Collins
 Fix all blackbox add tests, and the add --from-ids case in the UI.  | 
1864  | 
wt.lock_read()  | 
1865  | 
try:  | 
|
1866  | 
basis = wt.basis_tree()  | 
|
1867  | 
basis.lock_read()  | 
|
1868  | 
try:  | 
|
1869  | 
basis_inv = basis.inventory  | 
|
1870  | 
inv = wt.inventory  | 
|
1871  | 
for file_id in inv:  | 
|
1872  | 
if file_id in basis_inv:  | 
|
1873  | 
                        continue
 | 
|
1874  | 
if inv.is_root(file_id) and len(basis_inv) == 0:  | 
|
1875  | 
                        continue
 | 
|
1876  | 
path = inv.id2path(file_id)  | 
|
1877  | 
if not os.access(osutils.abspath(path), os.F_OK):  | 
|
1878  | 
                        continue
 | 
|
| 
3251.6.2
by Adrian Wilkins
 Added null separation option for bzr modified and bzr added  | 
1879  | 
if null:  | 
1880  | 
self.outf.write(path + '\0')  | 
|
1881  | 
else:  | 
|
1882  | 
self.outf.write(osutils.quotefn(path) + '\n')  | 
|
| 
2255.7.69
by Robert Collins
 Fix all blackbox add tests, and the add --from-ids case in the UI.  | 
1883  | 
finally:  | 
1884  | 
basis.unlock()  | 
|
1885  | 
finally:  | 
|
1886  | 
wt.unlock()  | 
|
| 
1185.85.53
by John Arbash Meinel
 Updated cmd_root  | 
1887  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1888  | 
|
1889  | 
class cmd_root(Command):  | 
|
1890  | 
"""Show the tree root directory.  | 
|
1891  | 
||
1892  | 
    The root is the nearest enclosing directory with a .bzr control
 | 
|
1893  | 
    directory."""
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
1894  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1895  | 
takes_args = ['filename?']  | 
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
1896  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1897  | 
def run(self, filename=None):  | 
1898  | 
"""Print the branch root."""  | 
|
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
1899  | 
tree = WorkingTree.open_containing(filename)[0]  | 
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
1900  | 
self.outf.write(tree.basedir + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1901  | 
|
1902  | 
||
| 
2466.9.1
by Kent Gibson
 add bzr log --limit  | 
1903  | 
def _parse_limit(limitstring):  | 
1904  | 
try:  | 
|
1905  | 
return int(limitstring)  | 
|
1906  | 
except ValueError:  | 
|
1907  | 
msg = "The limit argument must be an integer."  | 
|
1908  | 
raise errors.BzrCommandError(msg)  | 
|
1909  | 
||
1910  | 
||
| 
3970.1.1
by Ian Clatworthy
 log -n/--levels (Ian Clatworthy)  | 
1911  | 
def _parse_levels(s):  | 
| 
3947.1.6
by Ian Clatworthy
 log -n/--level-count N option  | 
1912  | 
try:  | 
1913  | 
return int(s)  | 
|
1914  | 
except ValueError:  | 
|
| 
3970.1.1
by Ian Clatworthy
 log -n/--levels (Ian Clatworthy)  | 
1915  | 
msg = "The levels argument must be an integer."  | 
| 
3947.1.6
by Ian Clatworthy
 log -n/--level-count N option  | 
1916  | 
raise errors.BzrCommandError(msg)  | 
1917  | 
||
1918  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
1919  | 
class cmd_log(Command):  | 
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
1920  | 
"""Show historical log for a branch or subset of a branch.  | 
1921  | 
||
1922  | 
    log is bzr's default tool for exploring the history of a branch.
 | 
|
1923  | 
    The branch to use is taken from the first parameter. If no parameters
 | 
|
1924  | 
    are given, the branch containing the working directory is logged.
 | 
|
1925  | 
    Here are some simple examples::
 | 
|
1926  | 
||
1927  | 
      bzr log                       log the current branch
 | 
|
1928  | 
      bzr log foo.py                log a file in its branch
 | 
|
1929  | 
      bzr log http://server/branch  log a branch on a server
 | 
|
1930  | 
||
1931  | 
    The filtering, ordering and information shown for each revision can
 | 
|
1932  | 
    be controlled as explained below. By default, all revisions are
 | 
|
1933  | 
    shown sorted (topologically) so that newer revisions appear before
 | 
|
1934  | 
    older ones and descendants always appear before ancestors. If displayed,
 | 
|
1935  | 
    merged revisions are shown indented under the revision in which they
 | 
|
1936  | 
    were merged.
 | 
|
1937  | 
||
1938  | 
    :Output control:
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1939  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1940  | 
      The log format controls how information about each revision is
 | 
1941  | 
      displayed. The standard log formats are called ``long``, ``short``
 | 
|
1942  | 
      and ``line``. The default is long. See ``bzr help log-formats``
 | 
|
1943  | 
      for more details on log formats.
 | 
|
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
1944  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1945  | 
      The following options can be used to control what information is
 | 
1946  | 
      displayed::
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1947  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1948  | 
        -l N        display a maximum of N revisions
 | 
1949  | 
        -n N        display N levels of revisions (0 for all, 1 for collapsed)
 | 
|
1950  | 
        -v          display a status summary (delta) for each revision
 | 
|
1951  | 
        -p          display a diff (patch) for each revision
 | 
|
1952  | 
        --show-ids  display revision-ids (and file-ids), not just revnos
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1953  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1954  | 
      Note that the default number of levels to display is a function of the
 | 
| 
4206.1.1
by Ian Clatworthy
 log mainline by default  | 
1955  | 
      log format. If the -n option is not used, the standard log formats show
 | 
1956  | 
      just the top level (mainline).
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1957  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1958  | 
      Status summaries are shown using status flags like A, M, etc. To see
 | 
1959  | 
      the changes explained using words like ``added`` and ``modified``
 | 
|
1960  | 
      instead, use the -vv option.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1961  | 
|
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
1962  | 
    :Ordering control:
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1963  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1964  | 
      To display revisions from oldest to newest, use the --forward option.
 | 
1965  | 
      In most cases, using this option will have little impact on the total
 | 
|
1966  | 
      time taken to produce a log, though --forward does not incrementally
 | 
|
1967  | 
      display revisions like --reverse does when it can.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1968  | 
|
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
1969  | 
    :Revision filtering:
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1970  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1971  | 
      The -r option can be used to specify what revision or range of revisions
 | 
1972  | 
      to filter against. The various forms are shown below::
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1973  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1974  | 
        -rX      display revision X
 | 
1975  | 
        -rX..    display revision X and later
 | 
|
1976  | 
        -r..Y    display up to and including revision Y
 | 
|
1977  | 
        -rX..Y   display from X to Y inclusive
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1978  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1979  | 
      See ``bzr help revisionspec`` for details on how to specify X and Y.
 | 
1980  | 
      Some common examples are given below::
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1981  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1982  | 
        -r-1                show just the tip
 | 
1983  | 
        -r-10..             show the last 10 mainline revisions
 | 
|
1984  | 
        -rsubmit:..         show what's new on this branch
 | 
|
1985  | 
        -rancestor:path..   show changes since the common ancestor of this
 | 
|
1986  | 
                            branch and the one at location path
 | 
|
1987  | 
        -rdate:yesterday..  show changes since yesterday
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1988  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
1989  | 
      When logging a range of revisions using -rX..Y, log starts at
 | 
1990  | 
      revision Y and searches back in history through the primary
 | 
|
1991  | 
      ("left-hand") parents until it finds X. When logging just the
 | 
|
1992  | 
      top level (using -n1), an error is reported if X is not found
 | 
|
1993  | 
      along the way. If multi-level logging is used (-n0), X may be
 | 
|
1994  | 
      a nested merge revision and the log will be truncated accordingly.
 | 
|
1995  | 
||
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
1996  | 
    :Path filtering:
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
1997  | 
|
| 
4202.2.5
by Ian Clatworthy
 apply review tweaks & update help  | 
1998  | 
      If parameters are given and the first one is not a branch, the log
 | 
1999  | 
      will be filtered to show only those revisions that changed the
 | 
|
2000  | 
      nominated files or directories.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2001  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2002  | 
      Filenames are interpreted within their historical context. To log a
 | 
2003  | 
      deleted file, specify a revision range so that the file existed at
 | 
|
2004  | 
      the end or start of the range.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2005  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2006  | 
      Historical context is also important when interpreting pathnames of
 | 
2007  | 
      renamed files/directories. Consider the following example:
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2008  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2009  | 
      * revision 1: add tutorial.txt
 | 
2010  | 
      * revision 2: modify tutorial.txt
 | 
|
2011  | 
      * revision 3: rename tutorial.txt to guide.txt; add tutorial.txt
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2012  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2013  | 
      In this case:
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2014  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2015  | 
      * ``bzr log guide.txt`` will log the file added in revision 1
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2016  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2017  | 
      * ``bzr log tutorial.txt`` will log the new file added in revision 3
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2018  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2019  | 
      * ``bzr log -r2 -p tutorial.txt`` will show the changes made to
 | 
2020  | 
        the original file in revision 2.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2021  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2022  | 
      * ``bzr log -r2 -p guide.txt`` will display an error message as there
 | 
2023  | 
        was no file called guide.txt in revision 2.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2024  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2025  | 
      Renames are always followed by log. By design, there is no need to
 | 
2026  | 
      explicitly ask for this (and no way to stop logging a file back
 | 
|
2027  | 
      until it was last renamed).
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2028  | 
|
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
2029  | 
    :Other filtering:
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2030  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2031  | 
      The --message option can be used for finding revisions that match a
 | 
2032  | 
      regular expression in a commit message.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2033  | 
|
| 
3974.1.2
by Ian Clatworthy
 enhanced log help  | 
2034  | 
    :Tips & tricks:
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2035  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2036  | 
      GUI tools and IDEs are often better at exploring history than command
 | 
2037  | 
      line tools. You may prefer qlog or glog from the QBzr and Bzr-Gtk packages
 | 
|
2038  | 
      respectively for example. (TortoiseBzr uses qlog for displaying logs.) See
 | 
|
2039  | 
      http://bazaar-vcs.org/BzrPlugins and http://bazaar-vcs.org/IDEIntegration.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2040  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2041  | 
      Web interfaces are often better at exploring history than command line
 | 
2042  | 
      tools, particularly for branches on servers. You may prefer Loggerhead
 | 
|
2043  | 
      or one of its alternatives. See http://bazaar-vcs.org/WebInterface.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2044  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2045  | 
      You may find it useful to add the aliases below to ``bazaar.conf``::
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2046  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2047  | 
        [ALIASES]
 | 
| 
4206.1.1
by Ian Clatworthy
 log mainline by default  | 
2048  | 
        tip = log -r-1
 | 
| 
4202.2.5
by Ian Clatworthy
 apply review tweaks & update help  | 
2049  | 
        top = log -l10 --line
 | 
| 
4206.1.1
by Ian Clatworthy
 log mainline by default  | 
2050  | 
        show = log -v -p
 | 
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2051  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2052  | 
      ``bzr tip`` will then show the latest revision while ``bzr top``
 | 
2053  | 
      will show the last 10 mainline revisions. To see the details of a
 | 
|
2054  | 
      particular revision X,  ``bzr show -rX``.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2055  | 
|
| 
4206.1.1
by Ian Clatworthy
 log mainline by default  | 
2056  | 
      If you are interested in looking deeper into a particular merge X,
 | 
2057  | 
      use ``bzr log -n0 -rX``.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2058  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2059  | 
      ``bzr log -v`` on a branch with lots of history is currently
 | 
2060  | 
      very slow. A fix for this issue is currently under development.
 | 
|
2061  | 
      With or without that fix, it is recommended that a revision range
 | 
|
2062  | 
      be given when using the -v option.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2063  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2064  | 
      bzr has a generic full-text matching plugin, bzr-search, that can be
 | 
2065  | 
      used to find revisions matching user names, commit messages, etc.
 | 
|
2066  | 
      Among other features, this plugin can find all revisions containing
 | 
|
2067  | 
      a list of words but not others.
 | 
|
| 
4032.1.1
by John Arbash Meinel
 Merge the removal of all trailing whitespace, and resolve conflicts.  | 
2068  | 
|
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2069  | 
      When exploring non-mainline history on large projects with deep
 | 
2070  | 
      history, the performance of log can be greatly improved by installing
 | 
|
2071  | 
      the revnocache plugin. This plugin buffers historical information
 | 
|
2072  | 
      trading disk space for faster speed.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2073  | 
    """
 | 
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2074  | 
takes_args = ['file*']  | 
| 
3974.1.4
by Ian Clatworthy
 log-formats topic and explained range searching  | 
2075  | 
_see_also = ['log-formats', 'revisionspec']  | 
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2076  | 
takes_options = [  | 
2077  | 
Option('forward',  | 
|
2078  | 
help='Show from oldest to newest.'),  | 
|
| 
3755.1.1
by Vincent Ladeuil
 Fix --verbose leaking into blackbox tests.  | 
2079  | 
'timezone',  | 
| 
2768.1.5
by Ian Clatworthy
 Wrap new std verbose option with new help instead of declaring a new one  | 
2080  | 
custom_help('verbose',  | 
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2081  | 
help='Show files changed in each revision.'),  | 
2082  | 
'show-ids',  | 
|
2083  | 
'revision',  | 
|
| 
3734.1.1
by Vincent Ladeuil
 Fix bug #248427 by adding a --change option to log.  | 
2084  | 
Option('change',  | 
2085  | 
type=bzrlib.option._parse_revision_str,  | 
|
2086  | 
short_name='c',  | 
|
2087  | 
help='Show just the specified revision.'  | 
|
2088  | 
' See also "help revisionspec".'),  | 
|
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2089  | 
'log-format',  | 
| 
3947.1.10
by Ian Clatworthy
 review feedback from vila  | 
2090  | 
Option('levels',  | 
| 
3947.1.5
by Ian Clatworthy
 rename --merge-revisions to --include-merges  | 
2091  | 
short_name='n',  | 
| 
3947.1.6
by Ian Clatworthy
 log -n/--level-count N option  | 
2092  | 
help='Number of levels to display - 0 for all, 1 for flat.',  | 
2093  | 
argname='N',  | 
|
| 
3970.1.1
by Ian Clatworthy
 log -n/--levels (Ian Clatworthy)  | 
2094  | 
type=_parse_levels),  | 
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2095  | 
Option('message',  | 
2096  | 
short_name='m',  | 
|
2097  | 
help='Show revisions whose message matches this '  | 
|
2098  | 
'regular expression.',  | 
|
2099  | 
type=str),  | 
|
2100  | 
Option('limit',  | 
|
| 
3108.1.1
by Matt Nordhoff
 bzr log: Add -l short name for the --limit argument.  | 
2101  | 
short_name='l',  | 
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2102  | 
help='Limit the output to the first N revisions.',  | 
2103  | 
argname='N',  | 
|
2104  | 
type=_parse_limit),  | 
|
| 
3943.5.1
by Ian Clatworthy
 first cut at log --show-diff  | 
2105  | 
Option('show-diff',  | 
| 
3943.5.5
by Ian Clatworthy
 tweak option name as requested in bug report  | 
2106  | 
short_name='p',  | 
2107  | 
help='Show changes made in each revision as a patch.'),  | 
|
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2108  | 
            ]
 | 
| 
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()  | 
2109  | 
encoding_type = 'replace'  | 
2110  | 
||
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2111  | 
    @display_command
 | 
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2112  | 
def run(self, file_list=None, timezone='original',  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2113  | 
verbose=False,  | 
2114  | 
show_ids=False,  | 
|
2115  | 
forward=False,  | 
|
2116  | 
revision=None,  | 
|
| 
3734.1.1
by Vincent Ladeuil
 Fix bug #248427 by adding a --change option to log.  | 
2117  | 
change=None,  | 
| 
1553.2.1
by Erik Bågfors
 Support for plugins to register log formatters and set default formatter  | 
2118  | 
log_format=None,  | 
| 
3947.1.10
by Ian Clatworthy
 review feedback from vila  | 
2119  | 
levels=None,  | 
| 
2466.9.1
by Kent Gibson
 add bzr log --limit  | 
2120  | 
message=None,  | 
| 
3943.5.1
by Ian Clatworthy
 first cut at log --show-diff  | 
2121  | 
limit=None,  | 
2122  | 
show_diff=False):  | 
|
| 
4202.2.5
by Ian Clatworthy
 apply review tweaks & update help  | 
2123  | 
from bzrlib.log import (  | 
2124  | 
Logger,  | 
|
2125  | 
make_log_request_dict,  | 
|
2126  | 
_get_info_for_log_files,  | 
|
2127  | 
            )
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2128  | 
direction = (forward and 'forward') or 'reverse'  | 
| 
3734.1.1
by Vincent Ladeuil
 Fix bug #248427 by adding a --change option to log.  | 
2129  | 
|
2130  | 
if change is not None:  | 
|
2131  | 
if len(change) > 1:  | 
|
2132  | 
raise errors.RangeInChangeOption()  | 
|
2133  | 
if revision is not None:  | 
|
2134  | 
raise errors.BzrCommandError(  | 
|
2135  | 
'--revision and --change are mutually exclusive')  | 
|
2136  | 
else:  | 
|
2137  | 
revision = change  | 
|
2138  | 
||
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2139  | 
file_ids = []  | 
2140  | 
filter_by_dir = False  | 
|
2141  | 
if file_list:  | 
|
2142  | 
            # find the file ids to log and check for directory filtering
 | 
|
2143  | 
b, file_info_list, rev1, rev2 = _get_info_for_log_files(revision,  | 
|
2144  | 
file_list)  | 
|
2145  | 
for relpath, file_id, kind in file_info_list:  | 
|
| 
2100.1.1
by wang
 Running ``bzr log`` on nonexistent file gives an error instead of the  | 
2146  | 
if file_id is None:  | 
2147  | 
raise errors.BzrCommandError(  | 
|
| 
3943.6.3
by Ian Clatworthy
 search the start tree if the end tree doesn't have a file  | 
2148  | 
"Path unknown at end or start of revision range: %s" %  | 
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2149  | 
relpath)  | 
2150  | 
                # If the relpath is the top of the tree, we log everything
 | 
|
2151  | 
if relpath == '':  | 
|
2152  | 
file_ids = []  | 
|
2153  | 
                    break
 | 
|
2154  | 
else:  | 
|
2155  | 
file_ids.append(file_id)  | 
|
2156  | 
filter_by_dir = filter_by_dir or (  | 
|
2157  | 
kind in ['directory', 'tree-reference'])  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2158  | 
else:  | 
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2159  | 
            # log everything
 | 
| 
4202.2.5
by Ian Clatworthy
 apply review tweaks & update help  | 
2160  | 
            # 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.  | 
2161  | 
if revision is not None \  | 
2162  | 
and len(revision) > 0 and revision[0].get_branch():  | 
|
| 
1907.4.2
by Matthieu Moy
 Make log work nicely with revno:N:path too.  | 
2163  | 
location = revision[0].get_branch()  | 
2164  | 
else:  | 
|
2165  | 
location = '.'  | 
|
2166  | 
dir, relpath = bzrdir.BzrDir.open_containing(location)  | 
|
| 
1534.4.46
by Robert Collins
 Nearly complete .bzr/checkout splitout.  | 
2167  | 
b = dir.open_branch()  | 
| 
3904.2.4
by Marius Kruger
 * rename _get2Revisions to _get_revision_range  | 
2168  | 
rev1, rev2 = _get_revision_range(revision, b, self.name())  | 
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2169  | 
|
2170  | 
        # Decide on the type of delta & diff filtering to use
 | 
|
2171  | 
        # TODO: add an --all-files option to make this configurable & consistent
 | 
|
2172  | 
if not verbose:  | 
|
2173  | 
delta_type = None  | 
|
2174  | 
else:  | 
|
2175  | 
delta_type = 'full'  | 
|
2176  | 
if not show_diff:  | 
|
2177  | 
diff_type = None  | 
|
2178  | 
elif file_ids:  | 
|
2179  | 
diff_type = 'partial'  | 
|
2180  | 
else:  | 
|
2181  | 
diff_type = 'full'  | 
|
2182  | 
||
2183  | 
b.lock_read()  | 
|
2184  | 
try:  | 
|
2185  | 
            # Build the log formatter
 | 
|
| 
2230.4.1
by Aaron Bentley
 Get log as fast branch5  | 
2186  | 
if log_format is None:  | 
2187  | 
log_format = log.log_formatter_registry.get_default(b)  | 
|
2188  | 
lf = log_format(show_ids=show_ids, to_file=self.outf,  | 
|
| 
3874.1.4
by Vincent Ladeuil
 Fixed as per Aarons' comment.  | 
2189  | 
show_timezone=timezone,  | 
| 
3947.1.1
by Ian Clatworthy
 add --merge-revisions to log  | 
2190  | 
delta_format=get_verbosity_level(),  | 
| 
3947.1.10
by Ian Clatworthy
 review feedback from vila  | 
2191  | 
levels=levels)  | 
| 
2230.4.1
by Aaron Bentley
 Get log as fast branch5  | 
2192  | 
|
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2193  | 
            # Choose the algorithm for doing the logging. It's annoying
 | 
2194  | 
            # having multiple code paths like this but necessary until
 | 
|
2195  | 
            # the underlying repository format is faster at generating
 | 
|
2196  | 
            # deltas or can provide everything we need from the indices.
 | 
|
2197  | 
            # The default algorithm - match-using-deltas - works for
 | 
|
2198  | 
            # multiple files and directories and is faster for small
 | 
|
2199  | 
            # amounts of history (200 revisions say). However, it's too
 | 
|
2200  | 
            # slow for logging a single file in a repository with deep
 | 
|
2201  | 
            # history, i.e. > 10K revisions. In the spirit of "do no
 | 
|
2202  | 
            # evil when adding features", we continue to use the
 | 
|
2203  | 
            # original algorithm - per-file-graph - for the "single
 | 
|
2204  | 
            # file that isn't a directory without showing a delta" case.
 | 
|
2205  | 
match_using_deltas = (len(file_ids) != 1 or filter_by_dir  | 
|
2206  | 
or delta_type)  | 
|
2207  | 
||
2208  | 
            # Build the LogRequest and execute it
 | 
|
2209  | 
if len(file_ids) == 0:  | 
|
2210  | 
file_ids = None  | 
|
| 
4202.2.5
by Ian Clatworthy
 apply review tweaks & update help  | 
2211  | 
rqst = make_log_request_dict(  | 
2212  | 
direction=direction, specific_fileids=file_ids,  | 
|
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2213  | 
start_revision=rev1, end_revision=rev2, limit=limit,  | 
2214  | 
message_search=message, delta_type=delta_type,  | 
|
2215  | 
diff_type=diff_type, _match_using_deltas=match_using_deltas)  | 
|
| 
4202.2.3
by Ian Clatworthy
 replace show_log_request with a Logger class  | 
2216  | 
Logger(b, rqst).show(lf)  | 
| 
2230.4.1
by Aaron Bentley
 Get log as fast branch5  | 
2217  | 
finally:  | 
2218  | 
b.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2219  | 
|
| 
3943.6.3
by Ian Clatworthy
 search the start tree if the end tree doesn't have a file  | 
2220  | 
|
| 
3904.2.4
by Marius Kruger
 * rename _get2Revisions to _get_revision_range  | 
2221  | 
def _get_revision_range(revisionspec_list, branch, command_name):  | 
2222  | 
"""Take the input of a revision option and turn it into a revision range.  | 
|
2223  | 
||
2224  | 
    It returns RevisionInfo objects which can be used to obtain the rev_id's
 | 
|
| 
4202.2.1
by Ian Clatworthy
 get directory logging working again  | 
2225  | 
    of the desired revisions. It does some user input validations.
 | 
| 
3904.2.4
by Marius Kruger
 * rename _get2Revisions to _get_revision_range  | 
2226  | 
    """
 | 
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
2227  | 
if revisionspec_list is None:  | 
2228  | 
rev1 = None  | 
|
2229  | 
rev2 = None  | 
|
2230  | 
elif len(revisionspec_list) == 1:  | 
|
2231  | 
rev1 = rev2 = revisionspec_list[0].in_history(branch)  | 
|
2232  | 
elif len(revisionspec_list) == 2:  | 
|
| 
3936.3.21
by Ian Clatworthy
 make log -rX.. as fast as log -rX..-1  | 
2233  | 
start_spec = revisionspec_list[0]  | 
2234  | 
end_spec = revisionspec_list[1]  | 
|
2235  | 
if end_spec.get_branch() != start_spec.get_branch():  | 
|
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
2236  | 
            # b is taken from revision[0].get_branch(), and
 | 
2237  | 
            # show_log will use its revision_history. Having
 | 
|
2238  | 
            # different branches will lead to weird behaviors.
 | 
|
2239  | 
raise errors.BzrCommandError(  | 
|
| 
3904.2.4
by Marius Kruger
 * rename _get2Revisions to _get_revision_range  | 
2240  | 
"bzr %s doesn't accept two revisions in different"  | 
2241  | 
" branches." % command_name)  | 
|
| 
3936.3.21
by Ian Clatworthy
 make log -rX.. as fast as log -rX..-1  | 
2242  | 
rev1 = start_spec.in_history(branch)  | 
2243  | 
        # Avoid loading all of history when we know a missing
 | 
|
2244  | 
        # end of range means the last revision ...
 | 
|
| 
3936.3.40
by Ian Clatworthy
 review feedback from jam  | 
2245  | 
if end_spec.spec is None:  | 
| 
3936.3.21
by Ian Clatworthy
 make log -rX.. as fast as log -rX..-1  | 
2246  | 
last_revno, last_revision_id = branch.last_revision_info()  | 
2247  | 
rev2 = RevisionInfo(branch, last_revno, last_revision_id)  | 
|
2248  | 
else:  | 
|
2249  | 
rev2 = end_spec.in_history(branch)  | 
|
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
2250  | 
else:  | 
2251  | 
raise errors.BzrCommandError(  | 
|
2252  | 
'bzr %s --revision takes one or two values.' % command_name)  | 
|
2253  | 
return rev1, rev2  | 
|
| 
1185.85.4
by John Arbash Meinel
 currently broken, trying to fix things up.  | 
2254  | 
|
| 
3921.3.4
by Marius Kruger
 add support to filter on local and remote revisions  | 
2255  | 
|
2256  | 
def _revision_range_to_revid_range(revision_range):  | 
|
2257  | 
rev_id1 = None  | 
|
2258  | 
rev_id2 = None  | 
|
2259  | 
if revision_range[0] is not None:  | 
|
2260  | 
rev_id1 = revision_range[0].rev_id  | 
|
2261  | 
if revision_range[1] is not None:  | 
|
2262  | 
rev_id2 = revision_range[1].rev_id  | 
|
2263  | 
return rev_id1, rev_id2  | 
|
2264  | 
||
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
2265  | 
def get_log_format(long=False, short=False, line=False, default='long'):  | 
2266  | 
log_format = default  | 
|
2267  | 
if long:  | 
|
2268  | 
log_format = 'long'  | 
|
2269  | 
if short:  | 
|
2270  | 
log_format = 'short'  | 
|
2271  | 
if line:  | 
|
2272  | 
log_format = 'line'  | 
|
2273  | 
return log_format  | 
|
2274  | 
||
2275  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2276  | 
class cmd_touching_revisions(Command):  | 
2277  | 
"""Return revision-ids which affected a particular file.  | 
|
2278  | 
||
| 
1685.1.80
by Wouter van Heyst
 more code cleanup  | 
2279  | 
    A more user-friendly interface is "bzr log FILE".
 | 
2280  | 
    """
 | 
|
2281  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2282  | 
hidden = True  | 
2283  | 
takes_args = ["filename"]  | 
|
| 
1185.85.55
by John Arbash Meinel
 Updated cmd_touching_revisions  | 
2284  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2285  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2286  | 
def run(self, filename):  | 
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2287  | 
tree, relpath = WorkingTree.open_containing(filename)  | 
2288  | 
b = tree.branch  | 
|
| 
2255.7.39
by Robert Collins
 Remove gratuitous references to inventory.path2id from builtins.py, allowing more commands to work on dirstate trees.  | 
2289  | 
file_id = tree.path2id(relpath)  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2290  | 
for revno, revision_id, what in log.find_touching_revisions(b, file_id):  | 
| 
1185.85.55
by John Arbash Meinel
 Updated cmd_touching_revisions  | 
2291  | 
self.outf.write("%6d %s\n" % (revno, what))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2292  | 
|
2293  | 
||
2294  | 
class cmd_ls(Command):  | 
|
2295  | 
"""List files in a tree.  | 
|
2296  | 
    """
 | 
|
| 
1551.9.24
by Aaron Bentley
 Unhide ls, add kind flag  | 
2297  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2298  | 
_see_also = ['status', 'cat']  | 
| 
2215.3.1
by Aaron Bentley
 Allow ls to take a PATH  | 
2299  | 
takes_args = ['path?']  | 
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
2300  | 
    # TODO: Take a revision or remote path and list that tree instead.
 | 
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
2301  | 
takes_options = [  | 
2302  | 
'verbose',  | 
|
2303  | 
'revision',  | 
|
2304  | 
Option('non-recursive',  | 
|
2305  | 
help='Don\'t recurse into subdirectories.'),  | 
|
2306  | 
Option('from-root',  | 
|
| 
2598.1.3
by Martin Pool
 Option help improvements (thanks jamesw)  | 
2307  | 
help='Print paths relative to the root of the branch.'),  | 
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
2308  | 
Option('unknown', help='Print unknown files.'),  | 
| 
3382.2.1
by Jerad Cramp
 Fixed bug #165086. Command 'bzr ls' now accepts '-V' as an alias for '--versioned'.  | 
2309  | 
Option('versioned', help='Print versioned files.',  | 
2310  | 
short_name='V'),  | 
|
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
2311  | 
Option('ignored', help='Print ignored files.'),  | 
2312  | 
Option('null',  | 
|
2313  | 
help='Write an ascii NUL (\\0) separator '  | 
|
2314  | 
'between files rather than a newline.'),  | 
|
| 
2598.1.11
by Martin Pool
 Insist that all options have a help string and fix those that don't.  | 
2315  | 
Option('kind',  | 
| 
2598.1.12
by Martin Pool
 Fix up --kind options  | 
2316  | 
help='List entries of a particular kind: file, directory, symlink.',  | 
2317  | 
type=unicode),  | 
|
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
2318  | 
'show-ids',  | 
2319  | 
            ]
 | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2320  | 
    @display_command
 | 
| 
2598.1.12
by Martin Pool
 Fix up --kind options  | 
2321  | 
def run(self, revision=None, verbose=False,  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
2322  | 
non_recursive=False, from_root=False,  | 
2323  | 
unknown=False, versioned=False, ignored=False,  | 
|
| 
4032.4.5
by Eduardo Padoan
 Check if the tree supports views only once when ls is called.  | 
2324  | 
null=False, kind=None, show_ids=False, path=None):  | 
| 
1551.9.24
by Aaron Bentley
 Unhide ls, add kind flag  | 
2325  | 
|
2326  | 
if kind and kind not in ('file', 'directory', 'symlink'):  | 
|
2327  | 
raise errors.BzrCommandError('invalid kind specified')  | 
|
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
2328  | 
|
2329  | 
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  | 
2330  | 
raise errors.BzrCommandError('Cannot set both --verbose and --null')  | 
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
2331  | 
all = not (unknown or versioned or ignored)  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
2332  | 
|
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
2333  | 
selection = {'I':ignored, '?':unknown, 'V':versioned}  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
2334  | 
|
| 
2215.3.1
by Aaron Bentley
 Allow ls to take a PATH  | 
2335  | 
if path is None:  | 
2336  | 
fs_path = '.'  | 
|
2337  | 
prefix = ''  | 
|
2338  | 
else:  | 
|
2339  | 
if from_root:  | 
|
2340  | 
raise errors.BzrCommandError('cannot specify both --from-root'  | 
|
2341  | 
' and PATH')  | 
|
2342  | 
fs_path = path  | 
|
2343  | 
prefix = path  | 
|
| 
2215.3.3
by Aaron Bentley
 Get ls working on branches  | 
2344  | 
tree, branch, relpath = bzrdir.BzrDir.open_containing_tree_or_branch(  | 
2345  | 
fs_path)  | 
|
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
2346  | 
if from_root:  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2347  | 
relpath = u''  | 
| 
1185.26.1
by John Arbash Meinel
 Made ls work again, and take extra arguments.  | 
2348  | 
elif relpath:  | 
2349  | 
relpath += '/'  | 
|
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
2350  | 
if revision is not None or tree is None:  | 
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
2351  | 
tree = _get_one_revision_tree('ls', revision, branch=branch)  | 
| 
1551.6.36
by Aaron Bentley
 Revert --debris/--detritus changes  | 
2352  | 
|
| 
4032.4.5
by Eduardo Padoan
 Check if the tree supports views only once when ls is called.  | 
2353  | 
apply_view = False  | 
| 
4048.1.2
by Ian Clatworthy
 fix broken test for ls -r  | 
2354  | 
if isinstance(tree, WorkingTree) and tree.supports_views():  | 
| 
4032.4.2
by Eduardo Padoan
 Make ls show only files on the current view.  | 
2355  | 
view_files = tree.views.lookup_view()  | 
2356  | 
if view_files:  | 
|
| 
4032.4.5
by Eduardo Padoan
 Check if the tree supports views only once when ls is called.  | 
2357  | 
apply_view = True  | 
| 
4032.4.2
by Eduardo Padoan
 Make ls show only files on the current view.  | 
2358  | 
view_str = views.view_display_str(view_files)  | 
| 
4210.1.1
by Ian Clatworthy
 reword 'ignoring files outside view' message  | 
2359  | 
note("Ignoring files outside view. View is %s" % view_str)  | 
| 
4032.4.2
by Eduardo Padoan
 Make ls show only files on the current view.  | 
2360  | 
|
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2361  | 
tree.lock_read()  | 
2362  | 
try:  | 
|
2363  | 
for fp, fc, fkind, fid, entry in tree.list_files(include_root=False):  | 
|
2364  | 
if fp.startswith(relpath):  | 
|
2365  | 
fp = osutils.pathjoin(prefix, fp[len(relpath):])  | 
|
2366  | 
if non_recursive and '/' in fp:  | 
|
2367  | 
                        continue
 | 
|
2368  | 
if not all and not selection[fc]:  | 
|
2369  | 
                        continue
 | 
|
2370  | 
if kind is not None and fkind != kind:  | 
|
2371  | 
                        continue
 | 
|
| 
4032.4.5
by Eduardo Padoan
 Check if the tree supports views only once when ls is called.  | 
2372  | 
if apply_view:  | 
| 
4032.4.2
by Eduardo Padoan
 Make ls show only files on the current view.  | 
2373  | 
try:  | 
2374  | 
views.check_path_in_view(tree, fp)  | 
|
2375  | 
except errors.FileOutsideView:  | 
|
2376  | 
                            continue
 | 
|
| 
3883.1.1
by Gordon P. Hemsley
 Add trailing slash after directories.  | 
2377  | 
kindch = entry.kind_character()  | 
| 
3883.1.3
by Gordon P. Hemsley
 Small optimization.  | 
2378  | 
outstring = fp + kindch  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2379  | 
if verbose:  | 
| 
3883.1.1
by Gordon P. Hemsley
 Add trailing slash after directories.  | 
2380  | 
outstring = '%-8s %s' % (fc, outstring)  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2381  | 
if show_ids and fid is not None:  | 
2382  | 
outstring = "%-50s %s" % (outstring, fid)  | 
|
2383  | 
self.outf.write(outstring + '\n')  | 
|
2384  | 
elif null:  | 
|
| 
3883.1.6
by Gordon P. Hemsley
 Revert added slash for null-separated output of 'bzr ls'.  | 
2385  | 
self.outf.write(fp + '\0')  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2386  | 
if show_ids:  | 
2387  | 
if fid is not None:  | 
|
2388  | 
self.outf.write(fid)  | 
|
2389  | 
self.outf.write('\0')  | 
|
2390  | 
self.outf.flush()  | 
|
2391  | 
else:  | 
|
| 
1551.9.27
by Aaron Bentley
 Implement show-ids for all output formats  | 
2392  | 
if fid is not None:  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2393  | 
my_id = fid  | 
2394  | 
else:  | 
|
2395  | 
my_id = ''  | 
|
2396  | 
if show_ids:  | 
|
| 
3883.1.1
by Gordon P. Hemsley
 Add trailing slash after directories.  | 
2397  | 
self.outf.write('%-50s %s\n' % (outstring, my_id))  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2398  | 
else:  | 
| 
3883.1.1
by Gordon P. Hemsley
 Add trailing slash after directories.  | 
2399  | 
self.outf.write(outstring + '\n')  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2400  | 
finally:  | 
2401  | 
tree.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2402  | 
|
2403  | 
||
2404  | 
class cmd_unknowns(Command):  | 
|
| 
1551.10.13
by Aaron Bentley
 Hide 'unknowns', document alterntatives to hidden commands  | 
2405  | 
"""List unknown files.  | 
2406  | 
    """
 | 
|
| 
1551.10.14
by Aaron Bentley
 Add some blank lines  | 
2407  | 
|
| 
1551.10.13
by Aaron Bentley
 Hide 'unknowns', document alterntatives to hidden commands  | 
2408  | 
hidden = True  | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2409  | 
_see_also = ['ls']  | 
| 
1551.10.14
by Aaron Bentley
 Add some blank lines  | 
2410  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2411  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2412  | 
def run(self):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2413  | 
for f in WorkingTree.open_containing(u'.')[0].unknowns():  | 
| 
1773.4.2
by Martin Pool
 Cleanup of imports; undeprecate all_revision_ids()  | 
2414  | 
self.outf.write(osutils.quotefn(f) + '\n')  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2415  | 
|
2416  | 
||
2417  | 
class cmd_ignore(Command):  | 
|
| 
2063.5.1
by wang
 "bzr ignore" takes multiple arguments. Fixes bug 29488.  | 
2418  | 
"""Ignore specified files or patterns.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2419  | 
|
| 
3398.1.26
by Ian Clatworthy
 jam feedback - make patterns a separate help topic  | 
2420  | 
    See ``bzr help patterns`` for details on the syntax of patterns.
 | 
2421  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2422  | 
    To remove patterns from the ignore list, edit the .bzrignore file.
 | 
| 
3398.1.26
by Ian Clatworthy
 jam feedback - make patterns a separate help topic  | 
2423  | 
    After adding, editing or deleting that file either indirectly by
 | 
2424  | 
    using this command or directly by using an editor, be sure to commit
 | 
|
2425  | 
    it.
 | 
|
| 
2135.2.2
by Kent Gibson
 Ignore pattern matcher (glob.py) patches:  | 
2426  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2427  | 
    Note: ignore patterns containing shell wildcards must be quoted from
 | 
| 
2135.2.2
by Kent Gibson
 Ignore pattern matcher (glob.py) patches:  | 
2428  | 
    the shell on Unix.
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2429  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
2430  | 
    :Examples:
 | 
2431  | 
        Ignore the top level Makefile::
 | 
|
2432  | 
||
2433  | 
            bzr ignore ./Makefile
 | 
|
2434  | 
||
2435  | 
        Ignore class files in all directories::
 | 
|
2436  | 
||
| 
3035.1.1
by John Arbash Meinel
 Address bug #59302 and fix documentation that uses single quotes.  | 
2437  | 
            bzr ignore "*.class"
 | 
2438  | 
||
2439  | 
        Ignore .o files under the lib directory::
 | 
|
2440  | 
||
2441  | 
            bzr ignore "lib/**/*.o"
 | 
|
2442  | 
||
2443  | 
        Ignore .o files under the lib directory::
 | 
|
2444  | 
||
2445  | 
            bzr ignore "RE:lib/.*\.o"
 | 
|
| 
3257.1.1
by Adeodato Simó
 Add an example of some bzrignore cool stuff with Python regexes.  | 
2446  | 
|
2447  | 
        Ignore everything but the "debian" toplevel directory::
 | 
|
2448  | 
||
2449  | 
            bzr ignore "RE:(?!debian/).*"
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2450  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2451  | 
|
| 
3398.1.26
by Ian Clatworthy
 jam feedback - make patterns a separate help topic  | 
2452  | 
_see_also = ['status', 'ignored', 'patterns']  | 
| 
2063.5.1
by wang
 "bzr ignore" takes multiple arguments. Fixes bug 29488.  | 
2453  | 
takes_args = ['name_pattern*']  | 
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
2454  | 
takes_options = [  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2455  | 
Option('old-default-rules',  | 
2456  | 
help='Write out the ignore rules bzr < 0.9 always used.')  | 
|
2457  | 
        ]
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2458  | 
|
| 
2063.5.2
by wang
 Don't use mutable values as default argument definitions.  | 
2459  | 
def run(self, name_pattern_list=None, old_default_rules=None):  | 
| 
3528.2.1
by Jelmer Vernooij
 Move functionality to add ignores to the ignore file into a separate function.  | 
2460  | 
from bzrlib import ignores  | 
| 
1765.1.1
by Robert Collins
 Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.  | 
2461  | 
if old_default_rules is not None:  | 
2462  | 
            # 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.  | 
2463  | 
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.  | 
2464  | 
print pattern  | 
2465  | 
            return
 | 
|
| 
2077.1.2
by Kent Gibson
 Strip trailing slashes from ignore patterns (#4559).  | 
2466  | 
if not name_pattern_list:  | 
| 
2063.5.5
by wang
 resolve a conflict  | 
2467  | 
raise errors.BzrCommandError("ignore requires at least one "  | 
| 
2063.5.4
by wang
 Copy Kent Gibson's changes that incorporates John Arbash Meinel's  | 
2468  | 
"NAME_PATTERN or --old-default-rules")  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2469  | 
name_pattern_list = [globbing.normalize_pattern(p)  | 
| 
2298.8.4
by Kent Gibson
 Fix whitespace and alignment.  | 
2470  | 
for p in name_pattern_list]  | 
| 
2077.1.2
by Kent Gibson
 Strip trailing slashes from ignore patterns (#4559).  | 
2471  | 
for name_pattern in name_pattern_list:  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2472  | 
if (name_pattern[0] == '/' or  | 
| 
2298.8.1
by Kent Gibson
 Normalise ignore patterns to use '/' path separator.  | 
2473  | 
(len(name_pattern) > 1 and name_pattern[1] == ':')):  | 
| 
2077.1.2
by Kent Gibson
 Strip trailing slashes from ignore patterns (#4559).  | 
2474  | 
raise errors.BzrCommandError(  | 
2475  | 
"NAME_PATTERN should not be an absolute path")  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2476  | 
tree, relpath = WorkingTree.open_containing(u'.')  | 
| 
3528.2.1
by Jelmer Vernooij
 Move functionality to add ignores to the ignore file into a separate function.  | 
2477  | 
ignores.tree_ignores_add_patterns(tree, name_pattern_list)  | 
| 
2747.5.1
by Daniel Watkins
 'ignore' now outputs a list of versioned files that match the given pattern.  | 
2478  | 
ignored = globbing.Globster(name_pattern_list)  | 
2479  | 
matches = []  | 
|
2480  | 
tree.lock_read()  | 
|
2481  | 
for entry in tree.list_files():  | 
|
2482  | 
id = entry[3]  | 
|
2483  | 
if id is not None:  | 
|
2484  | 
filename = entry[0]  | 
|
2485  | 
if ignored.match(filename):  | 
|
| 
2747.5.3
by Daniel Watkins
 Modified to avoid encoding issues.  | 
2486  | 
matches.append(filename.encode('utf-8'))  | 
| 
2747.5.1
by Daniel Watkins
 'ignore' now outputs a list of versioned files that match the given pattern.  | 
2487  | 
tree.unlock()  | 
2488  | 
if len(matches) > 0:  | 
|
2489  | 
print "Warning: the following files are version controlled and" \  | 
|
| 
4098.6.1
by Neil Martinsen-Burrell
 Use a more informative message when an ignore pattern matches existing version controlled files. Fixes #248895  | 
2490  | 
" match your ignore pattern:\n%s" \  | 
2491  | 
"\nThese files will continue to be version controlled" \  | 
|
2492  | 
" unless you 'bzr remove' them." % ("\n".join(matches),)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2493  | 
|
| 
3603.3.1
by Robert Collins
 * The help for ``bzr ignored`` now sugests ``bzr ls --ignored`` for  | 
2494  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2495  | 
class cmd_ignored(Command):  | 
2496  | 
"""List ignored files and the patterns that matched them.  | 
|
| 
3603.3.1
by Robert Collins
 * The help for ``bzr ignored`` now sugests ``bzr ls --ignored`` for  | 
2497  | 
|
2498  | 
    List all the ignored files and the ignore pattern that caused the file to
 | 
|
2499  | 
    be ignored.
 | 
|
2500  | 
||
2501  | 
    Alternatively, to list just the files::
 | 
|
2502  | 
||
2503  | 
        bzr ls --ignored
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2504  | 
    """
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2505  | 
|
| 
3123.2.1
by Lukáš Lalinský
 Use self.outf instead of sys.stdout in cmd_ignored.  | 
2506  | 
encoding_type = 'replace'  | 
| 
3603.3.1
by Robert Collins
 * The help for ``bzr ignored`` now sugests ``bzr ls --ignored`` for  | 
2507  | 
_see_also = ['ignore', 'ls']  | 
| 
3123.2.1
by Lukáš Lalinský
 Use self.outf instead of sys.stdout in cmd_ignored.  | 
2508  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2509  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2510  | 
def run(self):  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2511  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2512  | 
tree.lock_read()  | 
2513  | 
try:  | 
|
2514  | 
for path, file_class, kind, file_id, entry in tree.list_files():  | 
|
2515  | 
if file_class != 'I':  | 
|
2516  | 
                    continue
 | 
|
2517  | 
                ## XXX: Slightly inefficient since this was already calculated
 | 
|
2518  | 
pat = tree.is_ignored(path)  | 
|
| 
3123.2.1
by Lukáš Lalinský
 Use self.outf instead of sys.stdout in cmd_ignored.  | 
2519  | 
self.outf.write('%-50s %s\n' % (path, pat))  | 
| 
2255.2.61
by John Arbash Meinel
 Find callers of list_files() and make sure the tree is always locked.  | 
2520  | 
finally:  | 
2521  | 
tree.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2522  | 
|
2523  | 
||
2524  | 
class cmd_lookup_revision(Command):  | 
|
2525  | 
"""Lookup the revision-id from a revision-number  | 
|
2526  | 
||
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
2527  | 
    :Examples:
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2528  | 
        bzr lookup-revision 33
 | 
2529  | 
    """
 | 
|
2530  | 
hidden = True  | 
|
2531  | 
takes_args = ['revno']  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2532  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2533  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2534  | 
def run(self, revno):  | 
2535  | 
try:  | 
|
2536  | 
revno = int(revno)  | 
|
2537  | 
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  | 
2538  | 
raise errors.BzrCommandError("not a valid revision-number: %r" % revno)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2539  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
2540  | 
print WorkingTree.open_containing(u'.')[0].branch.get_rev_id(revno)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2541  | 
|
2542  | 
||
2543  | 
class cmd_export(Command):  | 
|
| 
2374.1.1
by Ian Clatworthy
 Help and man page fixes  | 
2544  | 
"""Export current or past revision to a destination directory or archive.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2545  | 
|
2546  | 
    If no revision is specified this exports the last committed revision.
 | 
|
2547  | 
||
2548  | 
    Format may be an "exporter" name, such as tar, tgz, tbz2.  If none is
 | 
|
2549  | 
    given, try to find the format with the extension. If no extension
 | 
|
2550  | 
    is found exports to a directory (equivalent to --format=dir).
 | 
|
2551  | 
||
| 
2374.1.4
by Ian Clatworthy
 Include feedback from mailing list.  | 
2552  | 
    If root is supplied, it will be used as the root directory inside
 | 
2553  | 
    container formats (tar, zip, etc). If it is not supplied it will default
 | 
|
2554  | 
    to the exported filename. The root option has no effect for 'dir' format.
 | 
|
| 
1185.31.11
by John Arbash Meinel
 Merging Alexander's zip export patch  | 
2555  | 
|
| 
2374.1.2
by Ian Clatworthy
 Improved after feedback from reviewers  | 
2556  | 
    If branch is omitted then the branch containing the current working
 | 
2557  | 
    directory will be used.
 | 
|
| 
2099.1.1
by Daniel Silverstone
 Add source branch support to export command  | 
2558  | 
|
| 
2374.1.3
by Ian Clatworthy
 Minor man page fixes for add, commit, export  | 
2559  | 
    Note: Export of tree with non-ASCII filenames to zip is not supported.
 | 
| 
1185.31.11
by John Arbash Meinel
 Merging Alexander's zip export patch  | 
2560  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
2561  | 
      =================       =========================
 | 
2562  | 
      Supported formats       Autodetected by extension
 | 
|
2563  | 
      =================       =========================
 | 
|
| 
2666.1.5
by Ian Clatworthy
 Incorporate feedback from Alex B. & James W.  | 
2564  | 
         dir                         (none)
 | 
| 
1185.31.11
by John Arbash Meinel
 Merging Alexander's zip export patch  | 
2565  | 
         tar                          .tar
 | 
2566  | 
         tbz2                    .tar.bz2, .tbz2
 | 
|
2567  | 
         tgz                      .tar.gz, .tgz
 | 
|
2568  | 
         zip                          .zip
 | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
2569  | 
      =================       =========================
 | 
| 
1185.31.11
by John Arbash Meinel
 Merging Alexander's zip export patch  | 
2570  | 
    """
 | 
| 
3613.2.1
by Robert Collins
 Teach export how to export a subdirectory. (Robert Collins)  | 
2571  | 
takes_args = ['dest', 'branch_or_subdir?']  | 
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
2572  | 
takes_options = [  | 
2573  | 
Option('format',  | 
|
2574  | 
help="Type of file to export to.",  | 
|
2575  | 
type=unicode),  | 
|
2576  | 
'revision',  | 
|
| 
3368.2.48
by Ian Clatworthy
 apply first round of poolie's review feedback  | 
2577  | 
Option('filters', help='Apply content filters to export the '  | 
2578  | 
'convenient form.'),  | 
|
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
2579  | 
Option('root',  | 
2580  | 
type=str,  | 
|
2581  | 
help="Name of the root directory inside the exported file."),  | 
|
2582  | 
        ]
 | 
|
| 
3613.2.1
by Robert Collins
 Teach export how to export a subdirectory. (Robert Collins)  | 
2583  | 
def run(self, dest, branch_or_subdir=None, revision=None, format=None,  | 
| 
3368.2.41
by Ian Clatworthy
 1st cut merge of bzr.dev r3907  | 
2584  | 
root=None, filters=False):  | 
| 
1185.31.12
by John Arbash Meinel
 Refactored the export code to make it easier to add new export formats.  | 
2585  | 
from bzrlib.export import export  | 
| 
2099.1.1
by Daniel Silverstone
 Add source branch support to export command  | 
2586  | 
|
| 
3613.2.1
by Robert Collins
 Teach export how to export a subdirectory. (Robert Collins)  | 
2587  | 
if branch_or_subdir is None:  | 
| 
2099.1.1
by Daniel Silverstone
 Add source branch support to export command  | 
2588  | 
tree = WorkingTree.open_containing(u'.')[0]  | 
2589  | 
b = tree.branch  | 
|
| 
3613.2.1
by Robert Collins
 Teach export how to export a subdirectory. (Robert Collins)  | 
2590  | 
subdir = None  | 
| 
2099.1.1
by Daniel Silverstone
 Add source branch support to export command  | 
2591  | 
else:  | 
| 
3613.2.1
by Robert Collins
 Teach export how to export a subdirectory. (Robert Collins)  | 
2592  | 
b, subdir = Branch.open_containing(branch_or_subdir)  | 
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
2593  | 
tree = None  | 
2594  | 
||
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
2595  | 
rev_tree = _get_one_revision_tree('export', revision, branch=b, tree=tree)  | 
| 
1185.31.12
by John Arbash Meinel
 Refactored the export code to make it easier to add new export formats.  | 
2596  | 
try:  | 
| 
3368.2.41
by Ian Clatworthy
 1st cut merge of bzr.dev r3907  | 
2597  | 
export(rev_tree, dest, format, root, subdir, filtered=filters)  | 
| 
1185.31.12
by John Arbash Meinel
 Refactored the export code to make it easier to add new export formats.  | 
2598  | 
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  | 
2599  | 
raise errors.BzrCommandError('Unsupported export format: %s' % e.format)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2600  | 
|
2601  | 
||
2602  | 
class cmd_cat(Command):  | 
|
| 
2374.1.1
by Ian Clatworthy
 Help and man page fixes  | 
2603  | 
"""Write the contents of a file as of a given revision to standard output.  | 
2604  | 
||
2605  | 
    If no revision is nominated, the last revision is used.
 | 
|
2606  | 
||
| 
2374.1.2
by Ian Clatworthy
 Improved after feedback from reviewers  | 
2607  | 
    Note: Take care to redirect standard output when using this command on a
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2608  | 
    binary file.
 | 
| 
2374.1.1
by Ian Clatworthy
 Help and man page fixes  | 
2609  | 
    """
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2610  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2611  | 
_see_also = ['ls']  | 
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
2612  | 
takes_options = [  | 
2613  | 
Option('name-from-revision', help='The path name in the old tree.'),  | 
|
| 
3368.2.48
by Ian Clatworthy
 apply first round of poolie's review feedback  | 
2614  | 
Option('filters', help='Apply content filters to display the '  | 
2615  | 
'convenience form.'),  | 
|
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
2616  | 
'revision',  | 
2617  | 
        ]
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2618  | 
takes_args = ['filename']  | 
| 
2178.4.4
by Alexander Belchenko
 encoding_type = 'exact' force sys.stdout to be binary stream on win32  | 
2619  | 
encoding_type = 'exact'  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2620  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2621  | 
    @display_command
 | 
| 
3368.2.31
by Ian Clatworthy
 add --filters option to cat command  | 
2622  | 
def run(self, filename, revision=None, name_from_revision=False,  | 
2623  | 
filters=False):  | 
|
| 
1185.50.9
by John Arbash Meinel
 [bug 3632] Matthieu Moy- bzr cat should default to last revision  | 
2624  | 
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  | 
2625  | 
raise errors.BzrCommandError("bzr cat --revision takes exactly"  | 
| 
3063.4.1
by Lukáš Lalinský
 Fix UnboundLocalError in cmd_cat.  | 
2626  | 
" one revision specifier")  | 
2627  | 
tree, branch, relpath = \  | 
|
2628  | 
bzrdir.BzrDir.open_containing_tree_or_branch(filename)  | 
|
2629  | 
branch.lock_read()  | 
|
2630  | 
try:  | 
|
2631  | 
return self._run(tree, branch, relpath, filename, revision,  | 
|
| 
3368.2.31
by Ian Clatworthy
 add --filters option to cat command  | 
2632  | 
name_from_revision, filters)  | 
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
2633  | 
finally:  | 
| 
3063.4.1
by Lukáš Lalinský
 Fix UnboundLocalError in cmd_cat.  | 
2634  | 
branch.unlock()  | 
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
2635  | 
|
| 
3368.2.31
by Ian Clatworthy
 add --filters option to cat command  | 
2636  | 
def _run(self, tree, b, relpath, filename, revision, name_from_revision,  | 
2637  | 
filtered):  | 
|
| 
1907.4.5
by Matthieu Moy
 Make bzr cat -r revno:N:foo consistant with bzr cat -r branch:foo.  | 
2638  | 
if tree is None:  | 
| 
2158.1.1
by Wouter van Heyst
 Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.  | 
2639  | 
tree = b.basis_tree()  | 
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
2640  | 
rev_tree = _get_one_revision_tree('cat', revision, branch=b)  | 
| 
2073.2.1
by wang
 ``bzr cat`` can look up contents of removed or renamed files. If the  | 
2641  | 
|
2642  | 
old_file_id = rev_tree.path2id(relpath)  | 
|
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
2643  | 
|
| 
2073.2.3
by wang
 Change option name to --name-from-revision. Always make new tree the  | 
2644  | 
if name_from_revision:  | 
| 
4112.1.1
by Vincent Ladeuil
 Fallback to old revision id if the current one doesn't exist in  | 
2645  | 
            # Try in revision if requested
 | 
| 
2073.2.1
by wang
 ``bzr cat`` can look up contents of removed or renamed files. If the  | 
2646  | 
if old_file_id is None:  | 
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
2647  | 
raise errors.BzrCommandError(  | 
2648  | 
"%r is not present in revision %s" % (  | 
|
2649  | 
filename, rev_tree.get_revision_id()))  | 
|
| 
2073.2.1
by wang
 ``bzr cat`` can look up contents of removed or renamed files. If the  | 
2650  | 
else:  | 
| 
3341.2.1
by Alexander Belchenko
 `bzr cat` no more internally used Tree.print_file().  | 
2651  | 
content = rev_tree.get_file_text(old_file_id)  | 
| 
2073.2.1
by wang
 ``bzr cat`` can look up contents of removed or renamed files. If the  | 
2652  | 
else:  | 
| 
4112.1.1
by Vincent Ladeuil
 Fallback to old revision id if the current one doesn't exist in  | 
2653  | 
cur_file_id = tree.path2id(relpath)  | 
2654  | 
found = False  | 
|
2655  | 
if cur_file_id is not None:  | 
|
2656  | 
                # Then try with the actual file id
 | 
|
2657  | 
try:  | 
|
2658  | 
content = rev_tree.get_file_text(cur_file_id)  | 
|
2659  | 
found = True  | 
|
2660  | 
except errors.NoSuchId:  | 
|
2661  | 
                    # The actual file id didn't exist at that time
 | 
|
2662  | 
                    pass
 | 
|
2663  | 
if not found and old_file_id is not None:  | 
|
2664  | 
                # Finally try with the old file id
 | 
|
2665  | 
content = rev_tree.get_file_text(old_file_id)  | 
|
2666  | 
found = True  | 
|
2667  | 
if not found:  | 
|
2668  | 
                # Can't be found anywhere
 | 
|
2669  | 
raise errors.BzrCommandError(  | 
|
2670  | 
"%r is not present in revision %s" % (  | 
|
2671  | 
filename, rev_tree.get_revision_id()))  | 
|
| 
3368.2.31
by Ian Clatworthy
 add --filters option to cat command  | 
2672  | 
if filtered:  | 
2673  | 
from bzrlib.filters import (  | 
|
2674  | 
ContentFilterContext,  | 
|
2675  | 
filtered_output_bytes,  | 
|
2676  | 
                )
 | 
|
| 
3368.2.33
by Ian Clatworthy
 expand filter context to support interesting stuff  | 
2677  | 
filters = rev_tree._content_filter_stack(relpath)  | 
| 
3368.2.48
by Ian Clatworthy
 apply first round of poolie's review feedback  | 
2678  | 
chunks = content.splitlines(True)  | 
2679  | 
content = filtered_output_bytes(chunks, filters,  | 
|
| 
3368.2.33
by Ian Clatworthy
 expand filter context to support interesting stuff  | 
2680  | 
ContentFilterContext(relpath, rev_tree))  | 
| 
3368.2.31
by Ian Clatworthy
 add --filters option to cat command  | 
2681  | 
self.outf.writelines(content)  | 
2682  | 
else:  | 
|
2683  | 
self.outf.write(content)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2684  | 
|
2685  | 
||
2686  | 
class cmd_local_time_offset(Command):  | 
|
2687  | 
"""Show the offset in seconds from GMT to local time."""  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2688  | 
hidden = True  | 
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2689  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2690  | 
def run(self):  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
2691  | 
print osutils.local_time_offset()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2692  | 
|
2693  | 
||
2694  | 
||
2695  | 
class cmd_commit(Command):  | 
|
2696  | 
"""Commit changes into a new revision.  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2697  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2698  | 
    If no arguments are given, the entire tree is committed.
 | 
2699  | 
||
2700  | 
    If selected files are specified, only changes to those files are
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2701  | 
    committed.  If a directory is specified then the directory and everything
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2702  | 
    within it is committed.
 | 
2703  | 
||
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
2704  | 
    When excludes are given, they take precedence over selected files.
 | 
2705  | 
    For example, too commit only changes within foo, but not changes within
 | 
|
2706  | 
    foo/bar::
 | 
|
2707  | 
||
2708  | 
      bzr commit foo -x foo/bar
 | 
|
2709  | 
||
| 
2671.2.2
by Lukáš Lalinský
 Move setting of the author revision property to MutableTree.commit. Don't use try/except KeyError in LongLogFormatter to display authors and branch-nicks. Removed warning about missing e-mail in the authors name.  | 
2710  | 
    If author of the change is not the same person as the committer, you can
 | 
2711  | 
    specify the author's name using the --author option. The name should be
 | 
|
2712  | 
    in the same format as a committer-id, e.g. "John Doe <jdoe@example.com>".
 | 
|
| 
4056.2.1
by James Westby
 Allow specifying multiple authors for a revision.  | 
2713  | 
    If there is more than one author of the change you can specify the option
 | 
2714  | 
    multiple times, once for each author.
 | 
|
| 
2671.2.1
by Lukáš Lalinský
 Add --author option to 'bzr commit' to record the author's name, if it's different from the committer.  | 
2715  | 
|
| 
2374.1.5
by Ian Clatworthy
 explained selected fail commit failure by design  | 
2716  | 
    A selected-file commit may fail in some cases where the committed
 | 
2717  | 
    tree would be invalid. Consider::
 | 
|
2718  | 
||
2719  | 
      bzr init foo
 | 
|
2720  | 
      mkdir foo/bar
 | 
|
2721  | 
      bzr add foo/bar
 | 
|
2722  | 
      bzr commit foo -m "committing foo"
 | 
|
| 
2374.1.6
by Ian Clatworthy
 explained selected fail commit failure by design  | 
2723  | 
      bzr mv foo/bar foo/baz
 | 
| 
2374.1.5
by Ian Clatworthy
 explained selected fail commit failure by design  | 
2724  | 
      mkdir foo/bar
 | 
2725  | 
      bzr add foo/bar
 | 
|
| 
2374.1.6
by Ian Clatworthy
 explained selected fail commit failure by design  | 
2726  | 
      bzr commit foo/bar -m "committing bar but not baz"
 | 
| 
2374.1.5
by Ian Clatworthy
 explained selected fail commit failure by design  | 
2727  | 
|
2728  | 
    In the example above, the last commit will fail by design. This gives
 | 
|
2729  | 
    the user the opportunity to decide whether they want to commit the
 | 
|
2730  | 
    rename at the same time, separately first, or not at all. (As a general
 | 
|
2731  | 
    rule, when in doubt, Bazaar has a policy of Doing the Safe Thing.)
 | 
|
2732  | 
||
| 
2374.1.3
by Ian Clatworthy
 Minor man page fixes for add, commit, export  | 
2733  | 
    Note: A selected-file commit after a merge is not yet supported.
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2734  | 
    """
 | 
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
2735  | 
    # TODO: Run hooks on tree to-be-committed, and after commit.
 | 
2736  | 
||
| 
1185.16.65
by mbp at sourcefrog
 - new commit --strict option  | 
2737  | 
    # TODO: Strict commit that fails if there are deleted files.
 | 
2738  | 
    #       (what does "deleted files" mean ??)
 | 
|
2739  | 
||
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
2740  | 
    # TODO: Give better message for -s, --summary, used by tla people
 | 
2741  | 
||
2742  | 
    # XXX: verbose currently does nothing
 | 
|
2743  | 
||
| 
2376.4.36
by Jonathan Lange
 Provide really basic help topic for our bug tracker support.  | 
2744  | 
_see_also = ['bugs', 'uncommit']  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2745  | 
takes_args = ['selected*']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2746  | 
takes_options = [  | 
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
2747  | 
ListOption('exclude', type=str, short_name='x',  | 
2748  | 
help="Do not consider changes made to a given path."),  | 
|
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
2749  | 
Option('message', type=unicode,  | 
2750  | 
short_name='m',  | 
|
2751  | 
help="Description of the new revision."),  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2752  | 
'verbose',  | 
2753  | 
Option('unchanged',  | 
|
2754  | 
help='Commit even if nothing has changed.'),  | 
|
2755  | 
Option('file', type=str,  | 
|
2756  | 
short_name='F',  | 
|
2757  | 
argname='msgfile',  | 
|
2758  | 
help='Take commit message from this file.'),  | 
|
2759  | 
Option('strict',  | 
|
2760  | 
help="Refuse to commit if there are unknown "  | 
|
2761  | 
"files in the working tree."),  | 
|
2762  | 
ListOption('fixes', type=str,  | 
|
| 
3535.10.7
by James Westby
 Make the --fixes option conform to the style guide check once more.  | 
2763  | 
help="Mark a bug as being fixed by this revision "  | 
| 
3535.10.9
by James Westby
 Make the improved messages show up in the UI.  | 
2764  | 
"(see \"bzr help bugs\")."),  | 
| 
4056.2.1
by James Westby
 Allow specifying multiple authors for a revision.  | 
2765  | 
ListOption('author', type=unicode,  | 
| 
2671.2.1
by Lukáš Lalinský
 Add --author option to 'bzr commit' to record the author's name, if it's different from the committer.  | 
2766  | 
help="Set the author's name, if it's different "  | 
2767  | 
"from the committer."),  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2768  | 
Option('local',  | 
2769  | 
help="Perform a local commit in a bound "  | 
|
2770  | 
                         "branch.  Local commits are not pushed to "
 | 
|
2771  | 
                         "the master branch until a normal commit "
 | 
|
2772  | 
                         "is performed."
 | 
|
2773  | 
                    ),
 | 
|
| 
2598.6.10
by ghigo
 In the commit dialog, the diff is stored as 8-bit raw data  | 
2774  | 
Option('show-diff',  | 
2775  | 
help='When no message is supplied, show the diff along'  | 
|
2776  | 
' with the status summary in the message editor.'),  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2777  | 
             ]
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2778  | 
aliases = ['ci', 'checkin']  | 
2779  | 
||
| 
4119.4.1
by Jonathan Lange
 Extract bug fix encoding logic from commit.  | 
2780  | 
def _iter_bug_fix_urls(self, fixes, branch):  | 
| 
2376.4.7
by jml at canonical
 - Add docstrings to tests.  | 
2781  | 
        # Configure the properties for bug fixing attributes.
 | 
2782  | 
for fixed_bug in fixes:  | 
|
2783  | 
tokens = fixed_bug.split(':')  | 
|
2784  | 
if len(tokens) != 2:  | 
|
2785  | 
raise errors.BzrCommandError(  | 
|
| 
3535.10.3
by James Westby
 Talk about "trackers" rather than "tags" as it may be less confusing.  | 
2786  | 
"Invalid bug %s. Must be in the form of 'tracker:id'. "  | 
| 
3535.10.9
by James Westby
 Make the improved messages show up in the UI.  | 
2787  | 
"See \"bzr help bugs\" for more information on this "  | 
2788  | 
"feature.\nCommit refused." % fixed_bug)  | 
|
| 
2376.4.7
by jml at canonical
 - Add docstrings to tests.  | 
2789  | 
tag, bug_id = tokens  | 
2790  | 
try:  | 
|
| 
4119.4.1
by Jonathan Lange
 Extract bug fix encoding logic from commit.  | 
2791  | 
yield bugtracker.get_bug_url(tag, branch, bug_id)  | 
| 
2376.4.26
by Jonathan Lange
 Tests for MalformedBugIdentifier and new error UnknownBugTrackerAbbreviation.  | 
2792  | 
except errors.UnknownBugTrackerAbbreviation:  | 
| 
2376.4.7
by jml at canonical
 - Add docstrings to tests.  | 
2793  | 
raise errors.BzrCommandError(  | 
2794  | 
'Unrecognized bug %s. Commit refused.' % fixed_bug)  | 
|
| 
3535.10.9
by James Westby
 Make the improved messages show up in the UI.  | 
2795  | 
except errors.MalformedBugIdentifier, e:  | 
| 
2376.4.7
by jml at canonical
 - Add docstrings to tests.  | 
2796  | 
raise errors.BzrCommandError(  | 
| 
3535.10.9
by James Westby
 Make the improved messages show up in the UI.  | 
2797  | 
"%s\nCommit refused." % (str(e),))  | 
| 
2376.4.7
by jml at canonical
 - Add docstrings to tests.  | 
2798  | 
|
| 
2768.1.5
by Ian Clatworthy
 Wrap new std verbose option with new help instead of declaring a new one  | 
2799  | 
def run(self, message=None, file=None, verbose=False, selected_list=None,  | 
| 
2817.4.4
by Vincent Ladeuil
 Redo the lost modification.  | 
2800  | 
unchanged=False, strict=False, local=False, fixes=None,  | 
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
2801  | 
author=None, show_diff=False, exclude=None):  | 
| 
2598.6.30
by ghigo
 - Updated the identation on the basis of Aaron suggestions  | 
2802  | 
from bzrlib.errors import (  | 
2803  | 
PointlessCommit,  | 
|
2804  | 
ConflictsInTree,  | 
|
2805  | 
            StrictCommitFailed
 | 
|
2806  | 
        )
 | 
|
2807  | 
from bzrlib.msgeditor import (  | 
|
2808  | 
edit_commit_message_encoded,  | 
|
| 
3642.2.1
by Jelmer Vernooij
 Add simple commit message template hook.  | 
2809  | 
generate_commit_message_template,  | 
| 
2598.6.30
by ghigo
 - Updated the identation on the basis of Aaron suggestions  | 
2810  | 
            make_commit_message_template_encoded
 | 
2811  | 
        )
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2812  | 
|
| 
1185.33.77
by Martin Pool
 doc  | 
2813  | 
        # TODO: Need a blackbox test for invoking the external editor; may be
 | 
2814  | 
        # slightly problematic to run this cross-platform.
 | 
|
2815  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2816  | 
        # TODO: do more checks that the commit will succeed before
 | 
| 
1185.33.72
by Martin Pool
 Fix commit message template for non-ascii files, and add test for handling of  | 
2817  | 
        # spending the user's valuable time typing a commit message.
 | 
| 
2376.4.2
by jml at canonical
 More sophisticated error handling for --fixes option  | 
2818  | 
|
2819  | 
properties = {}  | 
|
2820  | 
||
| 
1508.1.4
by Robert Collins
 Convert most of the front ends commands to use WorkingTree.open_containing  | 
2821  | 
tree, selected_list = tree_files(selected_list)  | 
| 
1704.2.11
by Martin Pool
 Handle 'bzr commit DIR' when dir contains pending merges.  | 
2822  | 
if selected_list == ['']:  | 
2823  | 
            # workaround - commit of root of tree should be exactly the same
 | 
|
2824  | 
            # as just default commit in that tree, and succeed even though
 | 
|
2825  | 
            # selected-file merge commit is not done yet
 | 
|
2826  | 
selected_list = []  | 
|
2827  | 
||
| 
2817.4.4
by Vincent Ladeuil
 Redo the lost modification.  | 
2828  | 
if fixes is None:  | 
2829  | 
fixes = []  | 
|
| 
4119.4.1
by Jonathan Lange
 Extract bug fix encoding logic from commit.  | 
2830  | 
bug_property = bugtracker.encode_fixes_bug_urls(  | 
2831  | 
self._iter_bug_fix_urls(fixes, tree.branch))  | 
|
| 
2453.2.1
by Martin Pool
 Don't set the bugs property unless bugs are actually set  | 
2832  | 
if bug_property:  | 
2833  | 
properties['bugs'] = bug_property  | 
|
| 
2376.4.7
by jml at canonical
 - Add docstrings to tests.  | 
2834  | 
|
| 
1587.1.8
by Robert Collins
 Local commits on unbound branches fail.  | 
2835  | 
if local and not tree.branch.get_bound_location():  | 
2836  | 
raise errors.LocalRequiresBoundBranch()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2837  | 
|
| 
2149.1.4
by Aaron Bentley
 Add additional test that callback is called with a Commit instance  | 
2838  | 
def get_message(commit_obj):  | 
| 
2149.1.2
by Aaron Bentley
 Defer getting the commit message until the revision is almost-committed  | 
2839  | 
"""Callback to get commit message"""  | 
2840  | 
my_message = message  | 
|
2841  | 
if my_message is None and not file:  | 
|
| 
2598.6.24
by ghigo
 update on the basis of Aaron suggestions  | 
2842  | 
t = make_commit_message_template_encoded(tree,  | 
| 
2598.6.30
by ghigo
 - Updated the identation on the basis of Aaron suggestions  | 
2843  | 
selected_list, diff=show_diff,  | 
| 
3224.5.1
by Andrew Bennetts
 Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.  | 
2844  | 
output_encoding=osutils.get_user_encoding())  | 
| 
3642.2.1
by Jelmer Vernooij
 Add simple commit message template hook.  | 
2845  | 
start_message = generate_commit_message_template(commit_obj)  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2846  | 
my_message = edit_commit_message_encoded(t,  | 
| 
3642.2.1
by Jelmer Vernooij
 Add simple commit message template hook.  | 
2847  | 
start_message=start_message)  | 
| 
2149.1.2
by Aaron Bentley
 Defer getting the commit message until the revision is almost-committed  | 
2848  | 
if my_message is None:  | 
2849  | 
raise errors.BzrCommandError("please specify a commit"  | 
|
2850  | 
" message with either --message or --file")  | 
|
| 
2598.6.29
by ghigo
 Removed the check on the switch "--show-diff" in order to allow the  | 
2851  | 
elif my_message and file:  | 
| 
2149.1.2
by Aaron Bentley
 Defer getting the commit message until the revision is almost-committed  | 
2852  | 
raise errors.BzrCommandError(  | 
| 
2598.6.29
by ghigo
 Removed the check on the switch "--show-diff" in order to allow the  | 
2853  | 
"please specify either --message or --file")  | 
| 
2149.1.2
by Aaron Bentley
 Defer getting the commit message until the revision is almost-committed  | 
2854  | 
if file:  | 
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
2855  | 
my_message = codecs.open(file, 'rt',  | 
| 
3224.5.4
by Andrew Bennetts
 Fix test suite, mainly weeding out uses of bzrlib.user_encoding.  | 
2856  | 
osutils.get_user_encoding()).read()  | 
| 
2149.1.2
by Aaron Bentley
 Defer getting the commit message until the revision is almost-committed  | 
2857  | 
if my_message == "":  | 
2858  | 
raise errors.BzrCommandError("empty commit message specified")  | 
|
2859  | 
return my_message  | 
|
| 
2376.4.2
by jml at canonical
 More sophisticated error handling for --fixes option  | 
2860  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2861  | 
try:  | 
| 
2149.1.2
by Aaron Bentley
 Defer getting the commit message until the revision is almost-committed  | 
2862  | 
tree.commit(message_callback=get_message,  | 
2863  | 
specific_files=selected_list,  | 
|
| 
1607.1.5
by Robert Collins
 Make commit verbose mode work!.  | 
2864  | 
allow_pointless=unchanged, strict=strict, local=local,  | 
| 
2789.2.1
by Ian Clatworthy
 Make commit less verbose by default  | 
2865  | 
reporter=None, verbose=verbose, revprops=properties,  | 
| 
4056.2.1
by James Westby
 Allow specifying multiple authors for a revision.  | 
2866  | 
authors=author,  | 
| 
3602.1.1
by Robert Collins
 Add support for -x or --exclude to bzr commit, fixing bug 3117. (Robert Collins)  | 
2867  | 
exclude=safe_relpath_files(tree, exclude))  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2868  | 
except PointlessCommit:  | 
2869  | 
            # FIXME: This should really happen before the file is read in;
 | 
|
2870  | 
            # perhaps prepare the commit; get the message; then actually commit
 | 
|
| 
1551.9.5
by Aaron Bentley
 Revert broken save-commit-message code  | 
2871  | 
raise errors.BzrCommandError("no changes to commit."  | 
2872  | 
" use --unchanged to commit anyhow")  | 
|
| 
1185.14.10
by Aaron Bentley
 Commit aborts with conflicts in the tree.  | 
2873  | 
except ConflictsInTree:  | 
| 
1551.9.5
by Aaron Bentley
 Revert broken save-commit-message code  | 
2874  | 
raise errors.BzrCommandError('Conflicts detected in working '  | 
2875  | 
                'tree.  Use "bzr conflicts" to list, "bzr resolve FILE" to'
 | 
|
2876  | 
' resolve.')  | 
|
| 
1185.16.65
by mbp at sourcefrog
 - new commit --strict option  | 
2877  | 
except StrictCommitFailed:  | 
| 
1551.9.5
by Aaron Bentley
 Revert broken save-commit-message code  | 
2878  | 
raise errors.BzrCommandError("Commit refused because there are"  | 
2879  | 
" 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  | 
2880  | 
except errors.BoundBranchOutOfDate, e:  | 
| 
1551.9.5
by Aaron Bentley
 Revert broken save-commit-message code  | 
2881  | 
raise errors.BzrCommandError(str(e) + "\n"  | 
2882  | 
'To commit to master branch, run update and then commit.\n'  | 
|
2883  | 
            'You can also pass --local to commit to continue working '
 | 
|
2884  | 
'disconnected.')  | 
|
| 
2111.1.1
by Martin Pool
 Fix #32054, save message if commit fails.  | 
2885  | 
|
2886  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2887  | 
class cmd_check(Command):  | 
| 
3015.4.20
by Daniel Watkins
 Fixed summary.  | 
2888  | 
"""Validate working tree structure, branch consistency and repository history.  | 
| 
3015.3.25
by Daniel Watkins
 Updated help.  | 
2889  | 
|
2890  | 
    This command checks various invariants about branch and repository storage
 | 
|
2891  | 
    to detect data corruption or bzr bugs.
 | 
|
2892  | 
||
2893  | 
    The working tree and branch checks will only give output if a problem is
 | 
|
2894  | 
    detected. The output fields of the repository check are:
 | 
|
| 
2745.6.8
by Aaron Bentley
 Clean up text  | 
2895  | 
|
2896  | 
        revisions: This is just the number of revisions checked.  It doesn't
 | 
|
2897  | 
            indicate a problem.
 | 
|
2898  | 
        versionedfiles: This is just the number of versionedfiles checked.  It
 | 
|
2899  | 
            doesn't indicate a problem.
 | 
|
2900  | 
        unreferenced ancestors: Texts that are ancestors of other texts, but
 | 
|
2901  | 
            are not properly referenced by the revision ancestry.  This is a
 | 
|
2902  | 
            subtle problem that Bazaar can work around.
 | 
|
2903  | 
        unique file texts: This is the total number of unique file contents
 | 
|
2904  | 
            seen in the checked revisions.  It does not indicate a problem.
 | 
|
2905  | 
        repeated file texts: This is the total number of repeated texts seen
 | 
|
2906  | 
            in the checked revisions.  Texts can be repeated when their file
 | 
|
2907  | 
            entries are modified, but the file contents are not.  It does not
 | 
|
2908  | 
            indicate a problem.
 | 
|
| 
3015.4.14
by Daniel Watkins
 Updated check help to explain what happens when no options are given.  | 
2909  | 
|
| 
3015.4.19
by Daniel Watkins
 Improved check docs.  | 
2910  | 
    If no restrictions are specified, all Bazaar data that is found at the given
 | 
2911  | 
    location will be checked.
 | 
|
2912  | 
||
2913  | 
    :Examples:
 | 
|
2914  | 
||
2915  | 
        Check the tree and branch at 'foo'::
 | 
|
2916  | 
||
2917  | 
            bzr check --tree --branch foo
 | 
|
2918  | 
||
2919  | 
        Check only the repository at 'bar'::
 | 
|
2920  | 
||
2921  | 
            bzr check --repo bar
 | 
|
2922  | 
||
2923  | 
        Check everything at 'baz'::
 | 
|
2924  | 
||
2925  | 
            bzr check baz
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2926  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2927  | 
|
2928  | 
_see_also = ['reconcile']  | 
|
| 
3015.3.2
by Daniel Watkins
 Check.check now takes a path rather than a branch.  | 
2929  | 
takes_args = ['path?']  | 
| 
3015.4.2
by Daniel Watkins
 Made UI changes to include CLI options.  | 
2930  | 
takes_options = ['verbose',  | 
2931  | 
Option('branch', help="Check the branch related to the"  | 
|
2932  | 
" current directory."),  | 
|
2933  | 
Option('repo', help="Check the repository related to the"  | 
|
2934  | 
" current directory."),  | 
|
2935  | 
Option('tree', help="Check the working tree related to"  | 
|
2936  | 
" the current directory.")]  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2937  | 
|
| 
3015.4.5
by Daniel Watkins
 Each option selects only the specific thing to be checked.  | 
2938  | 
def run(self, path=None, verbose=False, branch=False, repo=False,  | 
2939  | 
tree=False):  | 
|
| 
3015.3.22
by Daniel Watkins
 Changed 'check' to 'check_dwim'.  | 
2940  | 
from bzrlib.check import check_dwim  | 
| 
3015.3.2
by Daniel Watkins
 Check.check now takes a path rather than a branch.  | 
2941  | 
if path is None:  | 
2942  | 
path = '.'  | 
|
| 
3015.4.7
by Daniel Watkins
 Vanilla 'bzr check' checks all items.  | 
2943  | 
if not branch and not repo and not tree:  | 
2944  | 
branch = repo = tree = True  | 
|
| 
3015.4.2
by Daniel Watkins
 Made UI changes to include CLI options.  | 
2945  | 
check_dwim(path, verbose, do_branch=branch, do_repo=repo, do_tree=tree)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2946  | 
|
2947  | 
||
2948  | 
class cmd_upgrade(Command):  | 
|
2949  | 
"""Upgrade branch storage to current format.  | 
|
2950  | 
||
2951  | 
    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.  | 
2952  | 
    this command. When the default format has changed you may also be warned
 | 
2953  | 
    during other operations to upgrade.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2954  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
2955  | 
|
2956  | 
_see_also = ['check']  | 
|
| 
1534.4.13
by Robert Collins
 Give a reasonable warning on attempts to upgrade a readonly url.  | 
2957  | 
takes_args = ['url?']  | 
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
2958  | 
takes_options = [  | 
| 
2221.4.9
by Aaron Bentley
 Zap trailing whitespace  | 
2959  | 
RegistryOption('format',  | 
| 
2221.4.12
by Aaron Bentley
 Add option grouping to RegistryOption and clean up format options  | 
2960  | 
help='Upgrade to a specific format. See "bzr help'  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2961  | 
' formats" for details.',  | 
| 
3224.5.2
by Andrew Bennetts
 Avoid importing bzrlib.bzrdir unnecessarily.  | 
2962  | 
lazy_registry=('bzrlib.bzrdir', 'format_registry'),  | 
2963  | 
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),  | 
|
| 
2221.4.12
by Aaron Bentley
 Add option grouping to RegistryOption and clean up format options  | 
2964  | 
value_switches=True, title='Branch format'),  | 
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
2965  | 
                    ]
 | 
2966  | 
||
2967  | 
def run(self, url='.', format=None):  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2968  | 
from bzrlib.upgrade import upgrade  | 
| 
1857.1.20
by Aaron Bentley
 Strip out all the EnumOption stuff  | 
2969  | 
upgrade(url, format)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
2970  | 
|
2971  | 
||
2972  | 
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  | 
2973  | 
"""Show or set bzr user id.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2974  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
2975  | 
    :Examples:
 | 
2976  | 
        Show the email of the current user::
 | 
|
2977  | 
||
2978  | 
            bzr whoami --email
 | 
|
2979  | 
||
2980  | 
        Set the current user::
 | 
|
2981  | 
||
| 
3035.1.1
by John Arbash Meinel
 Address bug #59302 and fix documentation that uses single quotes.  | 
2982  | 
            bzr whoami "Frank Chu <fchu@example.com>"
 | 
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
2983  | 
    """
 | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
2984  | 
takes_options = [ Option('email',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2985  | 
help='Display email address only.'),  | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
2986  | 
Option('branch',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
2987  | 
help='Set identity for the current branch instead of '  | 
2988  | 
'globally.'),  | 
|
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
2989  | 
                    ]
 | 
2990  | 
takes_args = ['name?']  | 
|
2991  | 
encoding_type = 'replace'  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
2992  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
2993  | 
    @display_command
 | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
2994  | 
def run(self, email=False, branch=False, name=None):  | 
2995  | 
if name is None:  | 
|
2996  | 
            # use branch if we're inside one; otherwise global config
 | 
|
2997  | 
try:  | 
|
| 
1816.2.10
by Robey Pointer
 code style changes  | 
2998  | 
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  | 
2999  | 
except errors.NotBranchError:  | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
3000  | 
c = config.GlobalConfig()  | 
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
3001  | 
if email:  | 
| 
1816.2.10
by Robey Pointer
 code style changes  | 
3002  | 
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  | 
3003  | 
else:  | 
| 
1816.2.10
by Robey Pointer
 code style changes  | 
3004  | 
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  | 
3005  | 
            return
 | 
| 
1816.2.2
by Robey Pointer
 fix 'whoami' to use encodings and allow setting the global or branch identity  | 
3006  | 
|
| 
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  | 
3007  | 
        # display a warning if an email address isn't included in the given name.
 | 
3008  | 
try:  | 
|
3009  | 
config.extract_email_address(name)  | 
|
| 
2055.2.2
by John Arbash Meinel
 Switch extract_email_address() to use a more specific exception  | 
3010  | 
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  | 
3011  | 
warning('"%s" does not seem to contain an email address. '  | 
3012  | 
'This is allowed, but not recommended.', name)  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3013  | 
|
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
3014  | 
        # use global config unless --branch given
 | 
3015  | 
if branch:  | 
|
| 
1816.2.10
by Robey Pointer
 code style changes  | 
3016  | 
c = Branch.open_containing('.')[0].get_config()  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3017  | 
else:  | 
| 
1816.2.4
by Robey Pointer
 flesh out 'whoami' docs a little, and don't display the identity after setting it  | 
3018  | 
c = config.GlobalConfig()  | 
3019  | 
c.set_user_option('email', name)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3020  | 
|
| 
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.  | 
3021  | 
|
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
3022  | 
class cmd_nick(Command):  | 
| 
3565.6.16
by Marius Kruger
 update nick command description to mention how it works for bound branches,  | 
3023  | 
"""Print or set the branch nickname.  | 
3024  | 
||
3025  | 
    If unset, the tree root directory name is used as the nickname.
 | 
|
3026  | 
    To print the current nickname, execute with no argument.
 | 
|
3027  | 
||
3028  | 
    Bound branches use the nickname of its master branch unless it is set
 | 
|
3029  | 
    locally.
 | 
|
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
3030  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
3031  | 
|
3032  | 
_see_also = ['info']  | 
|
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
3033  | 
takes_args = ['nickname?']  | 
3034  | 
def run(self, nickname=None):  | 
|
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
3035  | 
branch = Branch.open_containing(u'.')[0]  | 
| 
1185.35.14
by Aaron Bentley
 Implemented nick command  | 
3036  | 
if nickname is None:  | 
3037  | 
self.printme(branch)  | 
|
3038  | 
else:  | 
|
3039  | 
branch.nick = nickname  | 
|
3040  | 
||
3041  | 
    @display_command
 | 
|
3042  | 
def printme(self, branch):  | 
|
| 
2367.1.8
by Robert Collins
 Whitespace.  | 
3043  | 
print branch.nick  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3044  | 
|
| 
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.  | 
3045  | 
|
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3046  | 
class cmd_alias(Command):  | 
| 
2900.3.7
by Tim Penhey
 Updates from Aaron's review.  | 
3047  | 
"""Set/unset and display aliases.  | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3048  | 
|
3049  | 
    :Examples:
 | 
|
3050  | 
        Show the current aliases::
 | 
|
3051  | 
||
3052  | 
            bzr alias
 | 
|
3053  | 
||
3054  | 
        Show the alias specified for 'll'::
 | 
|
3055  | 
||
3056  | 
            bzr alias ll
 | 
|
3057  | 
||
3058  | 
        Set an alias for 'll'::
 | 
|
3059  | 
||
| 
2900.3.10
by Tim Penhey
 Show examples, and change text to use double rather than single quotes.  | 
3060  | 
            bzr alias ll="log --line -r-10..-1"
 | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3061  | 
|
| 
2900.3.4
by Tim Penhey
 Removed the unalais separate command.  | 
3062  | 
        To remove an alias for 'll'::
 | 
3063  | 
||
3064  | 
            bzr alias --remove ll
 | 
|
3065  | 
||
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3066  | 
    """
 | 
3067  | 
takes_args = ['name?']  | 
|
| 
2900.3.4
by Tim Penhey
 Removed the unalais separate command.  | 
3068  | 
takes_options = [  | 
3069  | 
Option('remove', help='Remove the alias.'),  | 
|
3070  | 
        ]
 | 
|
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3071  | 
|
| 
2900.3.4
by Tim Penhey
 Removed the unalais separate command.  | 
3072  | 
def run(self, name=None, remove=False):  | 
3073  | 
if remove:  | 
|
3074  | 
self.remove_alias(name)  | 
|
3075  | 
elif name is None:  | 
|
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3076  | 
self.print_aliases()  | 
3077  | 
else:  | 
|
3078  | 
equal_pos = name.find('=')  | 
|
3079  | 
if equal_pos == -1:  | 
|
3080  | 
self.print_alias(name)  | 
|
3081  | 
else:  | 
|
3082  | 
self.set_alias(name[:equal_pos], name[equal_pos+1:])  | 
|
3083  | 
||
| 
2900.3.4
by Tim Penhey
 Removed the unalais separate command.  | 
3084  | 
def remove_alias(self, alias_name):  | 
3085  | 
if alias_name is None:  | 
|
3086  | 
raise errors.BzrCommandError(  | 
|
3087  | 
'bzr alias --remove expects an alias to remove.')  | 
|
3088  | 
        # If alias is not found, print something like:
 | 
|
3089  | 
        # unalias: foo: not found
 | 
|
| 
2900.3.8
by Tim Penhey
 Use the exception text for unalias not found.  | 
3090  | 
c = config.GlobalConfig()  | 
3091  | 
c.unset_alias(alias_name)  | 
|
| 
2900.3.4
by Tim Penhey
 Removed the unalais separate command.  | 
3092  | 
|
3093  | 
    @display_command
 | 
|
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3094  | 
def print_aliases(self):  | 
3095  | 
"""Print out the defined aliases in a similar format to bash."""  | 
|
3096  | 
aliases = config.GlobalConfig().get_aliases()  | 
|
| 
2900.3.7
by Tim Penhey
 Updates from Aaron's review.  | 
3097  | 
for key, value in sorted(aliases.iteritems()):  | 
| 
2900.3.10
by Tim Penhey
 Show examples, and change text to use double rather than single quotes.  | 
3098  | 
self.outf.write('bzr alias %s="%s"\n' % (key, value))  | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3099  | 
|
3100  | 
    @display_command
 | 
|
3101  | 
def print_alias(self, alias_name):  | 
|
3102  | 
from bzrlib.commands import get_alias  | 
|
3103  | 
alias = get_alias(alias_name)  | 
|
3104  | 
if alias is None:  | 
|
| 
2900.3.7
by Tim Penhey
 Updates from Aaron's review.  | 
3105  | 
self.outf.write("bzr alias: %s: not found\n" % alias_name)  | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3106  | 
else:  | 
| 
2900.3.7
by Tim Penhey
 Updates from Aaron's review.  | 
3107  | 
self.outf.write(  | 
| 
2900.3.11
by Tim Penhey
 Fixed the output in the tests.  | 
3108  | 
'bzr alias %s="%s"\n' % (alias_name, ' '.join(alias)))  | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3109  | 
|
| 
2900.3.12
by Tim Penhey
 Final review comments.  | 
3110  | 
def set_alias(self, alias_name, alias_command):  | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3111  | 
"""Save the alias in the global config."""  | 
3112  | 
c = config.GlobalConfig()  | 
|
| 
2900.3.12
by Tim Penhey
 Final review comments.  | 
3113  | 
c.set_alias(alias_name, alias_command)  | 
| 
2900.3.2
by Tim Penhey
 A working alias command.  | 
3114  | 
|
3115  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3116  | 
class cmd_selftest(Command):  | 
| 
1393.1.46
by Martin Pool
 - bzr selftest arguments can be partial ids of tests to run  | 
3117  | 
"""Run internal test suite.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3118  | 
|
| 
2213.2.1
by Martin Pool
 Add selftest --first flag  | 
3119  | 
    If arguments are given, they are regular expressions that say which tests
 | 
3120  | 
    should run.  Tests matching any expression are run, and other tests are
 | 
|
3121  | 
    not run.
 | 
|
3122  | 
||
3123  | 
    Alternatively if --first is given, matching tests are run first and then
 | 
|
3124  | 
    all other tests are run.  This is useful if you have been working in a
 | 
|
3125  | 
    particular area, but want to make sure nothing else was broken.
 | 
|
| 
1552
by Martin Pool
 Improved help text for bzr selftest  | 
3126  | 
|
| 
2394.2.2
by Ian Clatworthy
 Add --randomize and update help  | 
3127  | 
    If --exclude is given, tests that match that regular expression are
 | 
| 
2394.2.9
by Ian Clatworthy
 update NEWS and help to reflect removal of comma support  | 
3128  | 
    excluded, regardless of whether they match --first or not.
 | 
| 
2394.2.2
by Ian Clatworthy
 Add --randomize and update help  | 
3129  | 
|
3130  | 
    To help catch accidential dependencies between tests, the --randomize
 | 
|
3131  | 
    option is useful. In most cases, the argument used is the word 'now'.
 | 
|
3132  | 
    Note that the seed used for the random number generator is displayed
 | 
|
3133  | 
    when this option is used. The seed can be explicitly passed as the
 | 
|
3134  | 
    argument to this option if required. This enables reproduction of the
 | 
|
3135  | 
    actual ordering used if and when an order sensitive problem is encountered.
 | 
|
3136  | 
||
3137  | 
    If --list-only is given, the tests that would be run are listed. This is
 | 
|
3138  | 
    useful when combined with --first, --exclude and/or --randomize to
 | 
|
3139  | 
    understand their impact. The test harness reports "Listed nn tests in ..."
 | 
|
3140  | 
    instead of "Ran nn tests in ..." when list mode is enabled.
 | 
|
3141  | 
||
| 
1552
by Martin Pool
 Improved help text for bzr selftest  | 
3142  | 
    If the global option '--no-plugins' is given, plugins are not loaded
 | 
3143  | 
    before running the selftests.  This has two effects: features provided or
 | 
|
3144  | 
    modified by plugins will not be tested, and tests provided by plugins will
 | 
|
3145  | 
    not be run.
 | 
|
3146  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3147  | 
    Tests that need working space on disk use a common temporary directory,
 | 
| 
2598.4.1
by Martin Pool
 Remove obsolete --clean-output, --keep-output, --numbered-dirs selftest options (thanks Alexander)  | 
3148  | 
    typically inside $TMPDIR or /tmp.
 | 
3149  | 
||
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3150  | 
    :Examples:
 | 
3151  | 
        Run only tests relating to 'ignore'::
 | 
|
3152  | 
||
3153  | 
            bzr selftest ignore
 | 
|
3154  | 
||
3155  | 
        Disable plugins and list tests as they're run::
 | 
|
3156  | 
||
3157  | 
            bzr --no-plugins selftest -v
 | 
|
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
3158  | 
    """
 | 
| 
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.  | 
3159  | 
    # NB: this is used from the class without creating an instance, which is
 | 
3160  | 
    # why it does not have a self parameter.
 | 
|
3161  | 
def get_transport_type(typestring):  | 
|
3162  | 
"""Parse and return a transport specifier."""  | 
|
3163  | 
if typestring == "sftp":  | 
|
3164  | 
from bzrlib.transport.sftp import SFTPAbsoluteServer  | 
|
3165  | 
return SFTPAbsoluteServer  | 
|
| 
1534.4.26
by Robert Collins
 Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.  | 
3166  | 
if typestring == "memory":  | 
3167  | 
from bzrlib.transport.memory import MemoryServer  | 
|
3168  | 
return MemoryServer  | 
|
| 
1558.10.1
by Aaron Bentley
 Handle lockdirs over NFS properly  | 
3169  | 
if typestring == "fakenfs":  | 
| 
1558.10.2
by Robert Collins
 Refactor the FakeNFS support into a TransportDecorator.  | 
3170  | 
from bzrlib.transport.fakenfs import FakeNFSServer  | 
| 
1558.10.1
by Aaron Bentley
 Handle lockdirs over NFS properly  | 
3171  | 
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.  | 
3172  | 
msg = "No known transport type %s. Supported types are: sftp\n" %\  | 
3173  | 
(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  | 
3174  | 
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.  | 
3175  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3176  | 
hidden = True  | 
| 
1185.1.57
by Robert Collins
 nuke --pattern to selftest, replace with regexp.search calls.  | 
3177  | 
takes_args = ['testspecs*']  | 
| 
1552
by Martin Pool
 Improved help text for bzr selftest  | 
3178  | 
takes_options = ['verbose',  | 
| 
2418.2.2
by Martin Pool
 Add -1 option to selftest  | 
3179  | 
Option('one',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3180  | 
help='Stop when one test fails.',  | 
| 
2418.2.2
by Martin Pool
 Add -1 option to selftest  | 
3181  | 
short_name='1',  | 
3182  | 
                             ),
 | 
|
| 
2333.1.1
by Dmitry Vasiliev
 Fixed typo and removed some trailing whitespaces  | 
3183  | 
Option('transport',  | 
| 
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.  | 
3184  | 
help='Use a different transport by default '  | 
3185  | 
'throughout the test suite.',  | 
|
3186  | 
type=get_transport_type),  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3187  | 
Option('benchmark',  | 
3188  | 
help='Run the benchmarks rather than selftests.'),  | 
|
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
3189  | 
Option('lsprof-timed',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3190  | 
help='Generate lsprof output for benchmarked'  | 
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
3191  | 
' sections of code.'),  | 
| 
1908.2.4
by John Arbash Meinel
 Add the ability to specify a benchmark cache directory.  | 
3192  | 
Option('cache-dir', type=str,  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3193  | 
help='Cache intermediate benchmark output in this '  | 
3194  | 
'directory.'),  | 
|
| 
2213.2.1
by Martin Pool
 Add selftest --first flag  | 
3195  | 
Option('first',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3196  | 
help='Run all tests, but run specified tests first.',  | 
| 
2418.2.1
by Martin Pool
 Add -f alias for selftest --first  | 
3197  | 
short_name='f',  | 
| 
2321.2.1
by Alexander Belchenko
 `bzr selftest --numbered-dirs` use numbered dirs for TestCaseInTempDir  | 
3198  | 
                            ),
 | 
| 
2394.2.1
by Ian Clatworthy
 --list and --exclude first cut  | 
3199  | 
Option('list-only',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3200  | 
help='List the tests instead of running them.'),  | 
| 
4205.3.2
by Robert Collins
 Create fork and reinvoke parallel testing support.  | 
3201  | 
RegistryOption('parallel',  | 
| 
4205.3.5
by Robert Collins
 Missing . on the parallel option.  | 
3202  | 
help="Run the test suite in parallel.",  | 
| 
4205.3.2
by Robert Collins
 Create fork and reinvoke parallel testing support.  | 
3203  | 
lazy_registry=('bzrlib.tests', 'parallel_registry'),  | 
3204  | 
value_switches=False,  | 
|
3205  | 
                        ),
 | 
|
| 
2394.2.2
by Ian Clatworthy
 Add --randomize and update help  | 
3206  | 
Option('randomize', type=str, argname="SEED",  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3207  | 
help='Randomize the order of tests using the given'  | 
3208  | 
' seed or "now" for the current time.'),  | 
|
| 
2394.2.2
by Ian Clatworthy
 Add --randomize and update help  | 
3209  | 
Option('exclude', type=str, argname="PATTERN",  | 
| 
2394.2.6
by Ian Clatworthy
 completed blackbox tests  | 
3210  | 
short_name='x',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3211  | 
help='Exclude tests that match this regular'  | 
3212  | 
' expression.'),  | 
|
| 
4165.1.1
by Robert Collins
 Add builtin subunit support.  | 
3213  | 
Option('subunit',  | 
3214  | 
help='Output test progress via subunit.'),  | 
|
| 
2658.3.3
by Daniel Watkins
 Added UI support for bzr selftest --strict.  | 
3215  | 
Option('strict', help='Fail on missing dependencies or '  | 
3216  | 
'known failures.'),  | 
|
| 
3193.1.8
by Vincent Ladeuil
 Add '--load-list' option to selftest.  | 
3217  | 
Option('load-list', type=str, argname='TESTLISTFILE',  | 
3218  | 
help='Load a test id list from a text file.'),  | 
|
| 
3390.1.1
by Andrew Bennetts
 Add --debugflags/-E option to selftest.  | 
3219  | 
ListOption('debugflag', type=str, short_name='E',  | 
3220  | 
help='Turn on a selftest debug flag.'),  | 
|
| 
3649.6.4
by Vincent Ladeuil
 selftest --starting-with now accepts multiple values.  | 
3221  | 
ListOption('starting-with', type=str, argname='TESTID',  | 
3222  | 
param_name='starting_with', short_name='s',  | 
|
3223  | 
help=  | 
|
3224  | 
'Load only the tests starting with TESTID.'),  | 
|
| 
1725.1.1
by Robert Collins
 'bzr selftest --benchmark --lsprof-timed' will use lsprofile to generate  | 
3225  | 
                     ]
 | 
| 
2204.3.4
by Alexander Belchenko
 Command 'selftest' use 'replace' encoding_type to prevent sudden traceback  | 
3226  | 
encoding_type = 'replace'  | 
| 
1185.16.58
by mbp at sourcefrog
 - run all selftests by default  | 
3227  | 
|
| 
4000.2.3
by Robert Collins
 Allow extra options to bzrlib.tests.selftest from plugins.  | 
3228  | 
def __init__(self):  | 
3229  | 
Command.__init__(self)  | 
|
3230  | 
self.additional_selftest_args = {}  | 
|
3231  | 
||
| 
2805.1.1
by Ian Clatworthy
 Fix selftest --benchmark so verbose by default again  | 
3232  | 
def run(self, testspecs_list=None, verbose=False, one=False,  | 
| 
2598.4.1
by Martin Pool
 Remove obsolete --clean-output, --keep-output, --numbered-dirs selftest options (thanks Alexander)  | 
3233  | 
transport=None, benchmark=None,  | 
3234  | 
lsprof_timed=None, cache_dir=None,  | 
|
3235  | 
first=False, list_only=False,  | 
|
| 
3198.1.1
by Vincent Ladeuil
 Add --load-list option to selftest  | 
3236  | 
randomize=None, exclude=None, strict=False,  | 
| 
4205.3.2
by Robert Collins
 Create fork and reinvoke parallel testing support.  | 
3237  | 
load_list=None, debugflag=None, starting_with=None, subunit=False,  | 
3238  | 
parallel=None):  | 
|
| 
1707.2.2
by Robert Collins
 Start on bench_add, an add benchtest.  | 
3239  | 
from bzrlib.tests import selftest  | 
3240  | 
import bzrlib.benchmarks as benchmarks  | 
|
| 
1908.2.16
by John Arbash Meinel
 Move all the new TreeCreator classes into separate files.  | 
3241  | 
from bzrlib.benchmarks import tree_creator  | 
| 
2321.2.1
by Alexander Belchenko
 `bzr selftest --numbered-dirs` use numbered dirs for TestCaseInTempDir  | 
3242  | 
|
| 
3427.5.3
by John Arbash Meinel
 Update the activate_deprecation_warnings so it can be skipped if there is already an error set.  | 
3243  | 
        # Make deprecation warnings visible, unless -Werror is set
 | 
| 
3427.5.7
by John Arbash Meinel
 Bring back always in the form of 'override'.  | 
3244  | 
symbol_versioning.activate_deprecation_warnings(override=False)  | 
| 
3427.5.3
by John Arbash Meinel
 Update the activate_deprecation_warnings so it can be skipped if there is already an error set.  | 
3245  | 
|
| 
1908.2.4
by John Arbash Meinel
 Add the ability to specify a benchmark cache directory.  | 
3246  | 
if cache_dir is not None:  | 
| 
1908.2.16
by John Arbash Meinel
 Move all the new TreeCreator classes into separate files.  | 
3247  | 
tree_creator.TreeCreator.CACHE_ROOT = osutils.abspath(cache_dir)  | 
| 
2606.1.3
by Martin Pool
 Update tests for new version display  | 
3248  | 
if not list_only:  | 
| 
2687.3.1
by Martin Pool
 Revert selftest header to just two lines, but still show the bzrlib and python versions  | 
3249  | 
print 'testing: %s' % (osutils.realpath(sys.argv[0]),)  | 
3250  | 
print ' %s (%s python%s)' % (  | 
|
3251  | 
bzrlib.__path__[0],  | 
|
3252  | 
bzrlib.version_string,  | 
|
| 
3293.2.2
by Martin Pool
 Fix formatting of other occurrences of Python version  | 
3253  | 
bzrlib._format_version_tuple(sys.version_info),  | 
| 
2687.3.1
by Martin Pool
 Revert selftest header to just two lines, but still show the bzrlib and python versions  | 
3254  | 
                    )
 | 
| 
1707.2.1
by Robert Collins
 'bzr selftest --benchmark' will run a new benchmarking selftest.  | 
3255  | 
        print
 | 
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3256  | 
if testspecs_list is not None:  | 
3257  | 
pattern = '|'.join(testspecs_list)  | 
|
3258  | 
else:  | 
|
3259  | 
pattern = ".*"  | 
|
| 
4165.1.1
by Robert Collins
 Add builtin subunit support.  | 
3260  | 
if subunit:  | 
| 
4165.1.2
by Robert Collins
 Make a clear error when attempting to use subunit and it is not available.  | 
3261  | 
try:  | 
3262  | 
from bzrlib.tests import SubUnitBzrRunner  | 
|
3263  | 
except ImportError:  | 
|
3264  | 
raise errors.BzrCommandError("subunit not available. subunit "  | 
|
3265  | 
"needs to be installed to use --subunit.")  | 
|
| 
4165.1.1
by Robert Collins
 Add builtin subunit support.  | 
3266  | 
self.additional_selftest_args['runner_class'] = SubUnitBzrRunner  | 
| 
4205.3.2
by Robert Collins
 Create fork and reinvoke parallel testing support.  | 
3267  | 
if parallel:  | 
3268  | 
self.additional_selftest_args.setdefault(  | 
|
3269  | 
'suite_decorators', []).append(parallel)  | 
|
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3270  | 
if benchmark:  | 
3271  | 
test_suite_factory = benchmarks.test_suite  | 
|
| 
2805.1.1
by Ian Clatworthy
 Fix selftest --benchmark so verbose by default again  | 
3272  | 
            # Unless user explicitly asks for quiet, be verbose in benchmarks
 | 
3273  | 
verbose = not is_quiet()  | 
|
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3274  | 
            # TODO: should possibly lock the history file...
 | 
| 
2197.1.1
by Martin Pool
 Use line buffering to write .perf_history  | 
3275  | 
benchfile = open(".perf_history", "at", buffering=1)  | 
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3276  | 
else:  | 
3277  | 
test_suite_factory = None  | 
|
3278  | 
benchfile = None  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3279  | 
try:  | 
| 
4000.2.4
by Robert Collins
 PEP8ification of selftest_kwargs in cmd_selftest.  | 
3280  | 
selftest_kwargs = {"verbose": verbose,  | 
3281  | 
"pattern": pattern,  | 
|
3282  | 
"stop_on_failure": one,  | 
|
3283  | 
"transport": transport,  | 
|
3284  | 
"test_suite_factory": test_suite_factory,  | 
|
3285  | 
"lsprof_timed": lsprof_timed,  | 
|
3286  | 
"bench_history": benchfile,  | 
|
3287  | 
"matching_tests_first": first,  | 
|
3288  | 
"list_only": list_only,  | 
|
3289  | 
"random_seed": randomize,  | 
|
3290  | 
"exclude_pattern": exclude,  | 
|
3291  | 
"strict": strict,  | 
|
3292  | 
"load_list": load_list,  | 
|
3293  | 
"debug_flags": debugflag,  | 
|
3294  | 
"starting_with": starting_with  | 
|
| 
4000.2.3
by Robert Collins
 Allow extra options to bzrlib.tests.selftest from plugins.  | 
3295  | 
                              }
 | 
3296  | 
selftest_kwargs.update(self.additional_selftest_args)  | 
|
3297  | 
result = selftest(**selftest_kwargs)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3298  | 
finally:  | 
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3299  | 
if benchfile is not None:  | 
3300  | 
benchfile.close()  | 
|
3301  | 
if result:  | 
|
| 
3221.5.1
by Vincent Ladeuil
 Fix bug #137823 by raising UnavailableFeature *after* the fake ftp server  | 
3302  | 
note('tests passed')  | 
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3303  | 
else:  | 
| 
3221.5.1
by Vincent Ladeuil
 Fix bug #137823 by raising UnavailableFeature *after* the fake ftp server  | 
3304  | 
note('tests failed')  | 
| 
2095.4.1
by Martin Pool
 Better progress bars during tests  | 
3305  | 
return int(not result)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3306  | 
|
3307  | 
||
3308  | 
class cmd_version(Command):  | 
|
3309  | 
"""Show version of bzr."""  | 
|
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
3310  | 
|
| 
2785.1.2
by bialix at ukr
 bugfix for #131100  | 
3311  | 
encoding_type = 'replace'  | 
| 
3346.2.1
by Martin Pool
 Add version --short option  | 
3312  | 
takes_options = [  | 
3313  | 
Option("short", help="Print just the version number."),  | 
|
3314  | 
        ]
 | 
|
| 
2785.1.2
by bialix at ukr
 bugfix for #131100  | 
3315  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
3316  | 
    @display_command
 | 
| 
3346.2.1
by Martin Pool
 Add version --short option  | 
3317  | 
def run(self, short=False):  | 
| 
1819.1.8
by Martin Pool
 Improved reporting of bzrlib revision_id  | 
3318  | 
from bzrlib.version import show_version  | 
| 
3346.2.1
by Martin Pool
 Add version --short option  | 
3319  | 
if short:  | 
| 
3346.2.7
by Martin Pool
 Commands should use self.outf not print  | 
3320  | 
self.outf.write(bzrlib.version_string + '\n')  | 
| 
3346.2.1
by Martin Pool
 Add version --short option  | 
3321  | 
else:  | 
3322  | 
show_version(to_file=self.outf)  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3323  | 
|
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
3324  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3325  | 
class cmd_rocks(Command):  | 
3326  | 
"""Statement of optimism."""  | 
|
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
3327  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3328  | 
hidden = True  | 
| 
1871.1.1
by Robert Collins
 Relocate bzrlib selftest external output tests to bzrlib/tests/blackbox/test_selftest.py.  | 
3329  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
3330  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3331  | 
def run(self):  | 
| 
2227.4.1
by v.ladeuil+lp at free
 Fix #78026.  | 
3332  | 
print "It sure does!"  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3333  | 
|
3334  | 
||
3335  | 
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.  | 
3336  | 
"""Find and print a base revision for merging two branches."""  | 
| 
1185.16.3
by Martin Pool
 - remove all TODOs from bzr help messages  | 
3337  | 
    # TODO: Options to specify revisions on either side, as if
 | 
3338  | 
    #       merging only part of the history.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3339  | 
takes_args = ['branch', 'other']  | 
3340  | 
hidden = True  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3341  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
3342  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3343  | 
def run(self, branch, other):  | 
| 
2872.2.1
by Andrew Bennetts
 Remove unused imports in builtins.py revealed by pyflakes, and fix one undefined name.  | 
3344  | 
from bzrlib.revision import ensure_null  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3345  | 
|
| 
1442.1.64
by Robert Collins
 Branch.open_containing now returns a tuple (Branch, relative-path).  | 
3346  | 
branch1 = Branch.open_containing(branch)[0]  | 
3347  | 
branch2 = Branch.open_containing(other)[0]  | 
|
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
3348  | 
branch1.lock_read()  | 
3349  | 
try:  | 
|
3350  | 
branch2.lock_read()  | 
|
3351  | 
try:  | 
|
3352  | 
last1 = ensure_null(branch1.last_revision())  | 
|
3353  | 
last2 = ensure_null(branch2.last_revision())  | 
|
3354  | 
||
3355  | 
graph = branch1.repository.get_graph(branch2.repository)  | 
|
3356  | 
base_rev_id = graph.find_unique_lca(last1, last2)  | 
|
3357  | 
||
3358  | 
print 'merge base is revision %s' % base_rev_id  | 
|
3359  | 
finally:  | 
|
3360  | 
branch2.unlock()  | 
|
3361  | 
finally:  | 
|
3362  | 
branch1.unlock()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3363  | 
|
3364  | 
||
3365  | 
class cmd_merge(Command):  | 
|
3366  | 
"""Perform a three-way merge.  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3367  | 
|
| 
3277.1.1
by Peter Schuller
 Document the relationship between bzr send and bzr merge. In  | 
3368  | 
    The source of the merge can be specified either in the form of a branch,
 | 
3369  | 
    or in the form of a path to a file containing a merge directive generated
 | 
|
3370  | 
    with bzr send. If neither is specified, the default is the upstream branch
 | 
|
| 
3277.1.2
by Peter Schuller
 As per feedback to previous attempt:  | 
3371  | 
    or the branch most recently merged using --remember.
 | 
| 
3277.1.1
by Peter Schuller
 Document the relationship between bzr send and bzr merge. In  | 
3372  | 
|
| 
3277.1.2
by Peter Schuller
 As per feedback to previous attempt:  | 
3373  | 
    When merging a branch, by default the tip will be merged. To pick a different
 | 
3374  | 
    revision, pass --revision. If you specify two values, the first will be used as
 | 
|
| 
3313.1.1
by Ian Clatworthy
 Improve doc on send/merge relationship (Peter Schuller)  | 
3375  | 
    BASE and the second one as OTHER. Merging individual revisions, or a subset of
 | 
3376  | 
    available revisions, like this is commonly referred to as "cherrypicking".
 | 
|
| 
3277.1.3
by Peter Schuller
 Identify by name the "cherrypicking" mode of operation of 'bzr merge'.  | 
3377  | 
|
3378  | 
    Revision numbers are always relative to the branch being merged.
 | 
|
| 
1172
by Martin Pool
 - better explanation when merge fails with AmbiguousBase  | 
3379  | 
|
| 
1551.2.19
by Aaron Bentley
 Added See Conflicts to merge help  | 
3380  | 
    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  | 
3381  | 
    branch, automatically determining an appropriate base.  If this
 | 
3382  | 
    fails, you may need to give an explicit base.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3383  | 
|
| 
1551.2.18
by Aaron Bentley
 Updated docs to clarify conflict handling  | 
3384  | 
    Merge will do its best to combine the changes in two branches, but there
 | 
3385  | 
    are some kinds of problems only a human can fix.  When it encounters those,
 | 
|
3386  | 
    it will mark a conflict.  A conflict means that you need to fix something,
 | 
|
3387  | 
    before you should commit.
 | 
|
3388  | 
||
| 
1551.2.19
by Aaron Bentley
 Added See Conflicts to merge help  | 
3389  | 
    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  | 
3390  | 
|
| 
1614.2.4
by Olaf Conradi
 Renamed argument location in command merge back to branch.  | 
3391  | 
    If there is no default branch set, the first merge will set it. After
 | 
3392  | 
    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.  | 
3393  | 
    default, use --remember. The value will only be saved if the remote
 | 
3394  | 
    location can be accessed.
 | 
|
| 
1614.2.2
by Olaf Conradi
 Merge command:  | 
3395  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3396  | 
    The results of the merge are placed into the destination working
 | 
3397  | 
    directory, where they can be reviewed (with bzr diff), tested, and then
 | 
|
3398  | 
    committed to record the result of the merge.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3399  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3400  | 
    merge refuses to run if there are any uncommitted changes, unless
 | 
3401  | 
    --force is given.
 | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3402  | 
|
3403  | 
    :Examples:
 | 
|
3404  | 
        To merge the latest revision from bzr.dev::
 | 
|
3405  | 
||
3406  | 
            bzr merge ../bzr.dev
 | 
|
3407  | 
||
3408  | 
        To merge changes up to and including revision 82 from bzr.dev::
 | 
|
3409  | 
||
3410  | 
            bzr merge -r 82 ../bzr.dev
 | 
|
3411  | 
||
3412  | 
        To merge the changes introduced by 82, without previous changes::
 | 
|
3413  | 
||
3414  | 
            bzr merge -r 81..82 ../bzr.dev
 | 
|
| 
3277.1.1
by Peter Schuller
 Document the relationship between bzr send and bzr merge. In  | 
3415  | 
|
3416  | 
        To apply a merge directive contained in in /tmp/merge:
 | 
|
3417  | 
||
3418  | 
            bzr merge /tmp/merge
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3419  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
3420  | 
|
| 
3008.1.25
by Aaron Bentley
 Set encoding exact on cmd_merge  | 
3421  | 
encoding_type = 'exact'  | 
| 
4095.2.1
by Neil Martinsen-Burrell
 Better help for bzr send  | 
3422  | 
_see_also = ['update', 'remerge', 'status-flags', 'send']  | 
| 
3277.1.4
by Peter Schuller
 As per further feedback, use LOCATION instead of MERGE_OR_MERGE_DIRECTIVE.  | 
3423  | 
takes_args = ['location?']  | 
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
3424  | 
takes_options = [  | 
| 
2839.5.1
by Alexander Belchenko
 add -c option to merge command  | 
3425  | 
'change',  | 
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
3426  | 
'revision',  | 
3427  | 
Option('force',  | 
|
3428  | 
help='Merge even if the destination tree has uncommitted changes.'),  | 
|
3429  | 
'merge-type',  | 
|
3430  | 
'reprocess',  | 
|
3431  | 
'remember',  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3432  | 
Option('show-base', help="Show base revision text in "  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3433  | 
"conflicts."),  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3434  | 
Option('uncommitted', help='Apply uncommitted changes'  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3435  | 
' from a working copy, instead of branch changes.'),  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3436  | 
Option('pull', help='If the destination is already'  | 
3437  | 
                ' completely merged into the source, pull from the'
 | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3438  | 
                ' source rather than merging.  When this happens,'
 | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3439  | 
' you do not need to commit the result.'),  | 
3440  | 
Option('directory',  | 
|
| 
2598.1.10
by Martin Pool
 Clean up options that are registered globally and used once or not at all.  | 
3441  | 
help='Branch to merge into, '  | 
3442  | 
'rather than the one containing the working directory.',  | 
|
3443  | 
short_name='d',  | 
|
3444  | 
type=unicode,  | 
|
3445  | 
               ),
 | 
|
| 
3008.1.24
by Aaron Bentley
 Add merge --preview to show diff  | 
3446  | 
Option('preview', help='Instead of merging, show a diff of the merge.')  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3447  | 
    ]
 | 
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
3448  | 
|
| 
3277.1.4
by Peter Schuller
 As per further feedback, use LOCATION instead of MERGE_OR_MERGE_DIRECTIVE.  | 
3449  | 
def run(self, location=None, revision=None, force=False,  | 
| 
3744.2.1
by John Arbash Meinel
 Change 'bzr merge' so that it uses --reprocess as long as --show-base is not given.  | 
3450  | 
merge_type=None, show_base=False, reprocess=None, remember=False,  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3451  | 
uncommitted=False, pull=False,  | 
3452  | 
directory=None,  | 
|
| 
3008.1.24
by Aaron Bentley
 Add merge --preview to show diff  | 
3453  | 
preview=False,  | 
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3454  | 
            ):
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3455  | 
if merge_type is None:  | 
| 
1996.3.5
by John Arbash Meinel
 Cleanup, deprecated, and get the tests passing again.  | 
3456  | 
merge_type = _mod_merge.Merge3Merger  | 
| 
1614.2.2
by Olaf Conradi
 Merge command:  | 
3457  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3458  | 
if directory is None: directory = u'.'  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3459  | 
possible_transports = []  | 
3460  | 
merger = None  | 
|
3461  | 
allow_pending = True  | 
|
3462  | 
verified = 'inapplicable'  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
3463  | 
tree = WorkingTree.open_containing(directory)[0]  | 
| 
4037.2.1
by Roberto Aguilar
 Check for umcommitted changes.  | 
3464  | 
|
3465  | 
        # die as quickly as possible if there are uncommitted changes
 | 
|
| 
4037.2.2
by Roberto Aguilar
 Updating uncommitted changes check.  | 
3466  | 
try:  | 
3467  | 
basis_tree = tree.revision_tree(tree.last_revision())  | 
|
3468  | 
except errors.NoSuchRevision:  | 
|
3469  | 
basis_tree = tree.basis_tree()  | 
|
| 
4104.8.1
by Robert Collins
 Cherrypick the fix for merge --force onto 1.13.1  | 
3470  | 
if not force:  | 
3471  | 
changes = tree.changes_from(basis_tree)  | 
|
3472  | 
if changes.has_changed():  | 
|
3473  | 
raise errors.UncommittedChanges(tree)  | 
|
| 
4037.2.1
by Roberto Aguilar
 Check for umcommitted changes.  | 
3474  | 
|
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
3475  | 
view_info = _get_view_info_for_change_reporter(tree)  | 
| 
1551.10.25
by Aaron Bentley
 Make ChangeReporter private  | 
3476  | 
change_reporter = delta._ChangeReporter(  | 
| 
3586.1.31
by Ian Clatworthy
 view filtering for pull, update & merge  | 
3477  | 
unversioned_filter=tree.is_ignored, view_info=view_info)  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3478  | 
cleanups = []  | 
3479  | 
try:  | 
|
3480  | 
pb = ui.ui_factory.nested_progress_bar()  | 
|
3481  | 
cleanups.append(pb.finished)  | 
|
3482  | 
tree.lock_write()  | 
|
3483  | 
cleanups.append(tree.unlock)  | 
|
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3484  | 
if location is not None:  | 
| 
3251.4.10
by Aaron Bentley
 Pull of launchpad locations works (abentley, #181945)  | 
3485  | 
try:  | 
3486  | 
mergeable = bundle.read_mergeable_from_url(location,  | 
|
3487  | 
possible_transports=possible_transports)  | 
|
3488  | 
except errors.NotABundle:  | 
|
3489  | 
mergeable = None  | 
|
3490  | 
else:  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3491  | 
if uncommitted:  | 
3492  | 
raise errors.BzrCommandError('Cannot use --uncommitted'  | 
|
3493  | 
' with bundles or merge directives.')  | 
|
3494  | 
||
3495  | 
if revision is not None:  | 
|
3496  | 
raise errors.BzrCommandError(  | 
|
3497  | 
'Cannot use -r with merge directives or bundles')  | 
|
3498  | 
merger, verified = _mod_merge.Merger.from_mergeable(tree,  | 
|
3499  | 
mergeable, pb)  | 
|
3500  | 
||
3501  | 
if merger is None and uncommitted:  | 
|
3502  | 
if revision is not None and len(revision) > 0:  | 
|
3503  | 
raise errors.BzrCommandError('Cannot use --uncommitted and'  | 
|
3504  | 
' --revision at the same time.')  | 
|
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3505  | 
location = self._select_branch_location(tree, location)[0]  | 
3506  | 
other_tree, other_path = WorkingTree.open_containing(location)  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3507  | 
merger = _mod_merge.Merger.from_uncommitted(tree, other_tree,  | 
3508  | 
pb)  | 
|
3509  | 
allow_pending = False  | 
|
| 
3017.3.1
by Aaron Bentley
 merge --uncommit can now specify single files (#136890)  | 
3510  | 
if other_path != '':  | 
3511  | 
merger.interesting_files = [other_path]  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3512  | 
|
3513  | 
if merger is None:  | 
|
| 
1551.15.75
by Aaron Bentley
 _merger_from_branch -> _get_merger_from_branch  | 
3514  | 
merger, allow_pending = self._get_merger_from_branch(tree,  | 
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3515  | 
location, revision, remember, possible_transports, pb)  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3516  | 
|
3517  | 
merger.merge_type = merge_type  | 
|
3518  | 
merger.reprocess = reprocess  | 
|
3519  | 
merger.show_base = show_base  | 
|
3520  | 
self.sanity_check_merger(merger)  | 
|
3521  | 
if (merger.base_rev_id == merger.other_rev_id and  | 
|
| 
3376.2.11
by Martin Pool
 Compare to None using is/is not not ==  | 
3522  | 
merger.other_rev_id is not None):  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3523  | 
note('Nothing to do.')  | 
3524  | 
return 0  | 
|
3525  | 
if pull:  | 
|
3526  | 
if merger.interesting_files is not None:  | 
|
| 
2872.2.1
by Andrew Bennetts
 Remove unused imports in builtins.py revealed by pyflakes, and fix one undefined name.  | 
3527  | 
raise errors.BzrCommandError('Cannot pull individual files')  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3528  | 
if (merger.base_rev_id == tree.last_revision()):  | 
3529  | 
result = tree.pull(merger.other_branch, False,  | 
|
3530  | 
merger.other_rev_id)  | 
|
3531  | 
result.report(self.outf)  | 
|
3532  | 
return 0  | 
|
| 
4037.2.4
by Roberto Aguilar
 Set check_basis to False.  | 
3533  | 
merger.check_basis(False)  | 
| 
3008.1.24
by Aaron Bentley
 Add merge --preview to show diff  | 
3534  | 
if preview:  | 
3535  | 
return self._do_preview(merger)  | 
|
| 
1551.15.66
by Aaron Bentley
 Improve behavior with revision ids  | 
3536  | 
else:  | 
| 
3008.1.24
by Aaron Bentley
 Add merge --preview to show diff  | 
3537  | 
return self._do_merge(merger, change_reporter, allow_pending,  | 
3538  | 
verified)  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3539  | 
finally:  | 
3540  | 
for cleanup in reversed(cleanups):  | 
|
3541  | 
cleanup()  | 
|
3542  | 
||
| 
3008.1.24
by Aaron Bentley
 Add merge --preview to show diff  | 
3543  | 
def _do_preview(self, merger):  | 
3544  | 
from bzrlib.diff import show_diff_trees  | 
|
3545  | 
tree_merger = merger.make_merger()  | 
|
3546  | 
tt = tree_merger.make_preview_transform()  | 
|
| 
3199.1.9
by Vincent Ladeuil
 Aaron's review feedback.  | 
3547  | 
try:  | 
3548  | 
result_tree = tt.get_preview_tree()  | 
|
3549  | 
show_diff_trees(merger.this_tree, result_tree, self.outf,  | 
|
3550  | 
old_label='', new_label='')  | 
|
3551  | 
finally:  | 
|
3552  | 
tt.finalize()  | 
|
| 
3008.1.24
by Aaron Bentley
 Add merge --preview to show diff  | 
3553  | 
|
3554  | 
def _do_merge(self, merger, change_reporter, allow_pending, verified):  | 
|
3555  | 
merger.change_reporter = change_reporter  | 
|
3556  | 
conflict_count = merger.do_merge()  | 
|
3557  | 
if allow_pending:  | 
|
3558  | 
merger.set_pending()  | 
|
3559  | 
if verified == 'failed':  | 
|
3560  | 
warning('Preview patch does not match changes')  | 
|
3561  | 
if conflict_count != 0:  | 
|
3562  | 
return 1  | 
|
3563  | 
else:  | 
|
3564  | 
return 0  | 
|
3565  | 
||
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3566  | 
def sanity_check_merger(self, merger):  | 
3567  | 
if (merger.show_base and  | 
|
3568  | 
not merger.merge_type is _mod_merge.Merge3Merger):  | 
|
3569  | 
raise errors.BzrCommandError("Show-base is not supported for this"  | 
|
| 
2665.2.1
by Michael Hudson
 test and fix for a NameError in merge --weave --show-base  | 
3570  | 
" merge type. %s" % merger.merge_type)  | 
| 
3744.2.1
by John Arbash Meinel
 Change 'bzr merge' so that it uses --reprocess as long as --show-base is not given.  | 
3571  | 
if merger.reprocess is None:  | 
3572  | 
if merger.show_base:  | 
|
3573  | 
merger.reprocess = False  | 
|
3574  | 
else:  | 
|
3575  | 
                # Use reprocess if the merger supports it
 | 
|
3576  | 
merger.reprocess = merger.merge_type.supports_reprocess  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3577  | 
if merger.reprocess and not merger.merge_type.supports_reprocess:  | 
3578  | 
raise errors.BzrCommandError("Conflict reduction is not supported"  | 
|
| 
2665.2.1
by Michael Hudson
 test and fix for a NameError in merge --weave --show-base  | 
3579  | 
" for merge type %s." %  | 
3580  | 
merger.merge_type)  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3581  | 
if merger.reprocess and merger.show_base:  | 
3582  | 
raise errors.BzrCommandError("Cannot do conflict reduction and"  | 
|
3583  | 
" show base.")  | 
|
3584  | 
||
| 
1551.15.75
by Aaron Bentley
 _merger_from_branch -> _get_merger_from_branch  | 
3585  | 
def _get_merger_from_branch(self, tree, location, revision, remember,  | 
3586  | 
possible_transports, pb):  | 
|
3587  | 
"""Produce a merger from a location, assuming it refers to a branch."""  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3588  | 
from bzrlib.tag import _merge_tags_if_possible  | 
3589  | 
        # find the branch locations
 | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3590  | 
other_loc, user_location = self._select_branch_location(tree, location,  | 
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3591  | 
revision, -1)  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3592  | 
if revision is not None and len(revision) == 2:  | 
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3593  | 
base_loc, _unused = self._select_branch_location(tree,  | 
3594  | 
location, revision, 0)  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3595  | 
else:  | 
3596  | 
base_loc = other_loc  | 
|
3597  | 
        # Open the branches
 | 
|
3598  | 
other_branch, other_path = Branch.open_containing(other_loc,  | 
|
3599  | 
possible_transports)  | 
|
3600  | 
if base_loc == other_loc:  | 
|
3601  | 
base_branch = other_branch  | 
|
3602  | 
else:  | 
|
3603  | 
base_branch, base_path = Branch.open_containing(base_loc,  | 
|
| 
1551.15.66
by Aaron Bentley
 Improve behavior with revision ids  | 
3604  | 
possible_transports)  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3605  | 
        # Find the revision ids
 | 
3606  | 
if revision is None or len(revision) < 1 or revision[-1] is None:  | 
|
3607  | 
other_revision_id = _mod_revision.ensure_null(  | 
|
3608  | 
other_branch.last_revision())  | 
|
3609  | 
else:  | 
|
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
3610  | 
other_revision_id = revision[-1].as_revision_id(other_branch)  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3611  | 
if (revision is not None and len(revision) == 2  | 
3612  | 
and revision[0] is not None):  | 
|
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
3613  | 
base_revision_id = revision[0].as_revision_id(base_branch)  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3614  | 
else:  | 
3615  | 
base_revision_id = None  | 
|
| 
2485.8.37
by Vincent Ladeuil
 Fix merge multiple connections. Test suite *not* passing (sftp  | 
3616  | 
        # Remember where we merge from
 | 
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3617  | 
if ((remember or tree.branch.get_submit_branch() is None) and  | 
3618  | 
user_location is not None):  | 
|
3619  | 
tree.branch.set_submit_branch(other_branch.base)  | 
|
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3620  | 
_merge_tags_if_possible(other_branch, tree.branch)  | 
3621  | 
merger = _mod_merge.Merger.from_revision_ids(pb, tree,  | 
|
3622  | 
other_revision_id, base_revision_id, other_branch, base_branch)  | 
|
3623  | 
if other_path != '':  | 
|
3624  | 
allow_pending = False  | 
|
3625  | 
merger.interesting_files = [other_path]  | 
|
| 
1645.1.1
by Aaron Bentley
 Implement single-file merge  | 
3626  | 
else:  | 
| 
1551.15.67
by Aaron Bentley
 Stop using _merge_helper for merging  | 
3627  | 
allow_pending = True  | 
3628  | 
return merger, allow_pending  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3629  | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3630  | 
def _select_branch_location(self, tree, user_location, revision=None,  | 
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3631  | 
index=None):  | 
3632  | 
"""Select a branch location, according to possible inputs.  | 
|
3633  | 
||
3634  | 
        If provided, branches from ``revision`` are preferred.  (Both
 | 
|
3635  | 
        ``revision`` and ``index`` must be supplied.)
 | 
|
3636  | 
||
3637  | 
        Otherwise, the ``location`` parameter is used.  If it is None, then the
 | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3638  | 
        ``submit`` or ``parent`` location is used, and a note is printed.
 | 
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3639  | 
|
3640  | 
        :param tree: The working tree to select a branch for merging into
 | 
|
3641  | 
        :param location: The location entered by the user
 | 
|
3642  | 
        :param revision: The revision parameter to the command
 | 
|
3643  | 
        :param index: The index to use for the revision parameter.  Negative
 | 
|
3644  | 
            indices are permitted.
 | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3645  | 
        :return: (selected_location, user_location).  The default location
 | 
3646  | 
            will be the user-entered location.
 | 
|
| 
1551.15.74
by Aaron Bentley
 Textual updates from review  | 
3647  | 
        """
 | 
| 
1551.15.66
by Aaron Bentley
 Improve behavior with revision ids  | 
3648  | 
if (revision is not None and index is not None  | 
3649  | 
and revision[index] is not None):  | 
|
3650  | 
branch = revision[index].get_branch()  | 
|
3651  | 
if branch is not None:  | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3652  | 
return branch, branch  | 
3653  | 
if user_location is None:  | 
|
3654  | 
location = self._get_remembered(tree, 'Merging from')  | 
|
3655  | 
else:  | 
|
3656  | 
location = user_location  | 
|
3657  | 
return location, user_location  | 
|
| 
1551.15.66
by Aaron Bentley
 Improve behavior with revision ids  | 
3658  | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3659  | 
def _get_remembered(self, tree, verb_string):  | 
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
3660  | 
"""Use tree.branch's parent if none was supplied.  | 
3661  | 
||
3662  | 
        Report if the remembered location was used.
 | 
|
3663  | 
        """
 | 
|
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3664  | 
stored_location = tree.branch.get_submit_branch()  | 
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
3665  | 
stored_location_type = "submit"  | 
| 
1551.20.2
by Aaron Bentley
 Merge prefers submit branch, but falls back to parent branch  | 
3666  | 
if stored_location is None:  | 
3667  | 
stored_location = tree.branch.get_parent()  | 
|
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
3668  | 
stored_location_type = "parent"  | 
| 
1685.1.71
by Wouter van Heyst
 change branch.{get,set}_parent to store a relative path but return full urls  | 
3669  | 
mutter("%s", stored_location)  | 
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
3670  | 
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  | 
3671  | 
raise errors.BzrCommandError("No location specified or remembered")  | 
| 
3249.1.1
by Ian Clatworthy
 fix merge redirection when using a remembered location  | 
3672  | 
display_url = urlutils.unescape_for_display(stored_location, 'utf-8')  | 
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
3673  | 
note(u"%s remembered %s location %s", verb_string,  | 
3674  | 
stored_location_type, display_url)  | 
|
| 
1685.1.59
by Martin Pool
 [broken] Fix up & refactor display of remembered urls to unescape properly  | 
3675  | 
return stored_location  | 
3676  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3677  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3678  | 
class cmd_remerge(Command):  | 
3679  | 
"""Redo a merge.  | 
|
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
3680  | 
|
3681  | 
    Use this if you want to try a different merge technique while resolving
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3682  | 
    conflicts.  Some merge techniques are better than others, and remerge
 | 
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
3683  | 
    lets you try different ones on different files.
 | 
3684  | 
||
3685  | 
    The options for remerge have the same meaning and defaults as the ones for
 | 
|
3686  | 
    merge.  The difference is that remerge can (only) be run when there is a
 | 
|
3687  | 
    pending merge, and it lets you specify particular files.
 | 
|
3688  | 
||
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3689  | 
    :Examples:
 | 
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
3690  | 
        Re-do the merge of all conflicted files, and show the base text in
 | 
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3691  | 
        conflict regions, in addition to the usual THIS and OTHER texts::
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3692  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3693  | 
            bzr remerge --show-base
 | 
| 
1551.6.22
by Aaron Bentley
 Improved help for remerge and merge  | 
3694  | 
|
3695  | 
        Re-do the merge of "foobar", using the weave merge algorithm, with
 | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3696  | 
        additional processing to reduce the size of conflict regions::
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3697  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
3698  | 
            bzr remerge --merge-type weave --reprocess foobar
 | 
| 
2374.1.1
by Ian Clatworthy
 Help and man page fixes  | 
3699  | 
    """
 | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3700  | 
takes_args = ['file*']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3701  | 
takes_options = [  | 
3702  | 
'merge-type',  | 
|
3703  | 
'reprocess',  | 
|
3704  | 
Option('show-base',  | 
|
3705  | 
help="Show base revision text in conflicts."),  | 
|
3706  | 
            ]
 | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3707  | 
|
3708  | 
def run(self, file_list=None, merge_type=None, show_base=False,  | 
|
3709  | 
reprocess=False):  | 
|
3710  | 
if merge_type is None:  | 
|
| 
1996.3.5
by John Arbash Meinel
 Cleanup, deprecated, and get the tests passing again.  | 
3711  | 
merge_type = _mod_merge.Merge3Merger  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
3712  | 
tree, file_list = tree_files(file_list)  | 
3713  | 
tree.lock_write()  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3714  | 
try:  | 
| 
1908.6.8
by Robert Collins
 Remove remerges dependence on pending_merges, also makes it simpler.  | 
3715  | 
parents = tree.get_parent_ids()  | 
3716  | 
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  | 
3717  | 
raise errors.BzrCommandError("Sorry, remerge only works after normal"  | 
3718  | 
                                             " merges.  Not cherrypicking or"
 | 
|
3719  | 
" multi-merges.")  | 
|
| 
1185.67.2
by Aaron Bentley
 Renamed Branch.storage to Branch.repository  | 
3720  | 
repository = tree.branch.repository  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3721  | 
interesting_ids = None  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
3722  | 
new_conflicts = []  | 
3723  | 
conflicts = tree.conflicts()  | 
|
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3724  | 
if file_list is not None:  | 
3725  | 
interesting_ids = set()  | 
|
3726  | 
for filename in file_list:  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
3727  | 
file_id = tree.path2id(filename)  | 
| 
1558.2.1
by Aaron Bentley
 Ensure remerge errors when file-id is None  | 
3728  | 
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  | 
3729  | 
raise errors.NotVersionedError(filename)  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3730  | 
interesting_ids.add(file_id)  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
3731  | 
if tree.kind(file_id) != "directory":  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3732  | 
                        continue
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3733  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
3734  | 
for name, ie in tree.inventory.iter_entries(file_id):  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3735  | 
interesting_ids.add(ie.file_id)  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
3736  | 
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  | 
3737  | 
else:  | 
| 
2080.2.3
by John Arbash Meinel
 remerge only supports text or content conflicts  | 
3738  | 
                # Remerge only supports resolving contents conflicts
 | 
3739  | 
allowed_conflicts = ('text conflict', 'contents conflict')  | 
|
3740  | 
restore_files = [c.path for c in conflicts  | 
|
3741  | 
if c.typestring in allowed_conflicts]  | 
|
| 
1996.3.5
by John Arbash Meinel
 Cleanup, deprecated, and get the tests passing again.  | 
3742  | 
_mod_merge.transform_tree(tree, tree.basis_tree(), interesting_ids)  | 
| 
1551.7.10
by Aaron Bentley
 Remerge doesn't clear unrelated conflicts  | 
3743  | 
tree.set_conflicts(ConflictList(new_conflicts))  | 
| 
2080.2.1
by John Arbash Meinel
 Make 'bzr remerge' not use deprecated WorkingTree.iter_conflicts  | 
3744  | 
if file_list is not None:  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3745  | 
restore_files = file_list  | 
3746  | 
for filename in restore_files:  | 
|
3747  | 
try:  | 
|
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
3748  | 
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  | 
3749  | 
except errors.NotConflicted:  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3750  | 
                    pass
 | 
| 
1551.15.52
by Aaron Bentley
 Tweak from review comments  | 
3751  | 
            # Disable pending merges, because the file texts we are remerging
 | 
3752  | 
            # have not had those merges performed.  If we use the wrong parents
 | 
|
3753  | 
            # list, we imply that the working tree text has seen and rejected
 | 
|
3754  | 
            # all the changes from the other tree, when in fact those changes
 | 
|
3755  | 
            # have not yet been seen.
 | 
|
| 
3062.2.8
by Aaron Bentley
 Update remerge to use Merger.from_revision_ids  | 
3756  | 
pb = ui.ui_factory.nested_progress_bar()  | 
| 
1551.15.53
by Aaron Bentley
 Restore old method of adjusting partents  | 
3757  | 
tree.set_parent_ids(parents[:1])  | 
| 
1551.15.47
by Aaron Bentley
 Fix remerge --weave  | 
3758  | 
try:  | 
| 
3062.2.8
by Aaron Bentley
 Update remerge to use Merger.from_revision_ids  | 
3759  | 
merger = _mod_merge.Merger.from_revision_ids(pb,  | 
3760  | 
tree, parents[1])  | 
|
3761  | 
merger.interesting_ids = interesting_ids  | 
|
3762  | 
merger.merge_type = merge_type  | 
|
3763  | 
merger.show_base = show_base  | 
|
3764  | 
merger.reprocess = reprocess  | 
|
3765  | 
conflicts = merger.do_merge()  | 
|
| 
1551.15.47
by Aaron Bentley
 Fix remerge --weave  | 
3766  | 
finally:  | 
| 
1551.15.53
by Aaron Bentley
 Restore old method of adjusting partents  | 
3767  | 
tree.set_parent_ids(parents)  | 
| 
3062.2.8
by Aaron Bentley
 Update remerge to use Merger.from_revision_ids  | 
3768  | 
pb.finished()  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3769  | 
finally:  | 
| 
1508.1.15
by Robert Collins
 Merge from mpool.  | 
3770  | 
tree.unlock()  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
3771  | 
if conflicts > 0:  | 
3772  | 
return 1  | 
|
3773  | 
else:  | 
|
3774  | 
return 0  | 
|
3775  | 
||
| 
2023.1.1
by ghigo
 add topics help  | 
3776  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3777  | 
class cmd_revert(Command):  | 
| 
1551.8.27
by Aaron Bentley
 Update docs again  | 
3778  | 
"""Revert files to a previous revision.  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3779  | 
|
| 
1551.8.27
by Aaron Bentley
 Update docs again  | 
3780  | 
    Giving a list of files will revert only those files.  Otherwise, all files
 | 
3781  | 
    will be reverted.  If the revision is not specified with '--revision', the
 | 
|
3782  | 
    last committed revision is used.
 | 
|
| 
1551.8.26
by Aaron Bentley
 Update revert help text  | 
3783  | 
|
3784  | 
    To remove only some changes, without reverting to a prior version, use
 | 
|
| 
3026.1.1
by Nicholas Allen
 Fix small typo in command description for the revert command.  | 
3785  | 
    merge instead.  For example, "merge . --revision -2..-3" will remove the
 | 
3786  | 
    changes introduced by -2, without affecting the changes introduced by -1.
 | 
|
3787  | 
    Or to remove certain changes on a hunk-by-hunk basis, see the Shelf plugin.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3788  | 
|
| 
1551.8.26
by Aaron Bentley
 Update revert help text  | 
3789  | 
    By default, any files that have been manually changed will be backed up
 | 
3790  | 
    first.  (Files changed only by merge are not backed up.)  Backup files have
 | 
|
| 
1551.8.27
by Aaron Bentley
 Update docs again  | 
3791  | 
    '.~#~' appended to their name, where # is a number.
 | 
3792  | 
||
3793  | 
    When you provide files, you can use their current pathname or the pathname
 | 
|
3794  | 
    from the target revision.  So you can use revert to "undelete" a file by
 | 
|
3795  | 
    name.  If you name a directory, all the contents of that directory will be
 | 
|
3796  | 
    reverted.
 | 
|
| 
2614.1.1
by Martin Pool
 Doc for revert, #87548  | 
3797  | 
|
3798  | 
    Any files that have been newly added since that revision will be deleted,
 | 
|
3799  | 
    with a backup kept if appropriate.  Directories containing unknown files
 | 
|
3800  | 
    will not be deleted.
 | 
|
| 
2911.2.1
by Martin Pool
 Better help for revert  | 
3801  | 
|
3802  | 
    The working tree contains a list of pending merged revisions, which will
 | 
|
3803  | 
    be included as parents in the next commit.  Normally, revert clears that
 | 
|
| 
3006.1.1
by Adeodato Simó
 Fix typos in revert's help.  | 
3804  | 
    list as well as reverting the files.  If any files are specified, revert
 | 
3805  | 
    leaves the pending merge list alone and reverts only the files.  Use "bzr
 | 
|
| 
2911.2.1
by Martin Pool
 Better help for revert  | 
3806  | 
    revert ." in the tree root to revert all files but keep the merge record,
 | 
3807  | 
    and "bzr revert --forget-merges" to clear the pending merge list without
 | 
|
3808  | 
    reverting any files.
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3809  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
3810  | 
|
3811  | 
_see_also = ['cat', 'export']  | 
|
| 
2598.1.6
by Martin Pool
 Add help for --no-backup  | 
3812  | 
takes_options = [  | 
| 
2851.2.1
by Martin Pool
 Add revert --forget-merges  | 
3813  | 
'revision',  | 
3814  | 
Option('no-backup', "Do not save backups of reverted files."),  | 
|
3815  | 
Option('forget-merges',  | 
|
3816  | 
'Remove pending merge marker, without changing any files.'),  | 
|
3817  | 
        ]
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3818  | 
takes_args = ['file*']  | 
3819  | 
||
| 
2851.2.1
by Martin Pool
 Add revert --forget-merges  | 
3820  | 
def run(self, revision=None, no_backup=False, file_list=None,  | 
3821  | 
forget_merges=None):  | 
|
| 
1185.50.53
by John Arbash Meinel
 [patch] Aaron Bentley: make revert work in a subdirectory.  | 
3822  | 
tree, file_list = tree_files(file_list)  | 
| 
3737.2.1
by John Arbash Meinel
 Take out a write lock right away for 'bzr revert'  | 
3823  | 
tree.lock_write()  | 
3824  | 
try:  | 
|
3825  | 
if forget_merges:  | 
|
3826  | 
tree.set_parent_ids(tree.get_parent_ids()[:1])  | 
|
3827  | 
else:  | 
|
3828  | 
self._revert_tree_to_revision(tree, revision, file_list, no_backup)  | 
|
3829  | 
finally:  | 
|
3830  | 
tree.unlock()  | 
|
| 
2851.2.1
by Martin Pool
 Add revert --forget-merges  | 
3831  | 
|
3832  | 
    @staticmethod
 | 
|
3833  | 
def _revert_tree_to_revision(tree, revision, file_list, no_backup):  | 
|
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
3834  | 
rev_tree = _get_one_revision_tree('revert', revision, tree=tree)  | 
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
3835  | 
pb = ui.ui_factory.nested_progress_bar()  | 
| 
1551.2.25
by Aaron Bentley
 Stop using deprecated methods in merge and revert  | 
3836  | 
try:  | 
| 
3655.3.1
by Lukáš Lalinský
 Fix `bzr st -rbranch:PATH_TO_BRANCH`  | 
3837  | 
tree.revert(file_list, rev_tree, not no_backup, pb,  | 
3838  | 
report_changes=True)  | 
|
| 
1551.2.25
by Aaron Bentley
 Stop using deprecated methods in merge and revert  | 
3839  | 
finally:  | 
3840  | 
pb.finished()  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3841  | 
|
3842  | 
||
3843  | 
class cmd_assert_fail(Command):  | 
|
3844  | 
"""Test reporting of assertion failures"""  | 
|
| 
2090.2.1
by Martin Pool
 Fix some code which relies on assertions and breaks under python -O  | 
3845  | 
    # intended just for use in testing
 | 
3846  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3847  | 
hidden = True  | 
| 
2090.2.1
by Martin Pool
 Fix some code which relies on assertions and breaks under python -O  | 
3848  | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3849  | 
def run(self):  | 
| 
2090.2.1
by Martin Pool
 Fix some code which relies on assertions and breaks under python -O  | 
3850  | 
raise AssertionError("always fails")  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3851  | 
|
3852  | 
||
3853  | 
class cmd_help(Command):  | 
|
3854  | 
"""Show help on a command or other topic.  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
3855  | 
    """
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3856  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
3857  | 
_see_also = ['topics']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3858  | 
takes_options = [  | 
3859  | 
Option('long', 'Show help on all commands.'),  | 
|
3860  | 
            ]
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3861  | 
takes_args = ['topic?']  | 
| 
1616.1.15
by Martin Pool
 Handle 'bzr ?', etc.  | 
3862  | 
aliases = ['?', '--help', '-?', '-h']  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3863  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
3864  | 
    @display_command
 | 
| 
3984.4.5
by Ian Clatworthy
 help xxx is full help; xxx -h is concise help  | 
3865  | 
def run(self, topic=None, long=False):  | 
| 
2023.1.1
by ghigo
 add topics help  | 
3866  | 
import bzrlib.help  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3867  | 
if topic is None and long:  | 
3868  | 
topic = "commands"  | 
|
| 
3984.4.5
by Ian Clatworthy
 help xxx is full help; xxx -h is concise help  | 
3869  | 
bzrlib.help.help(topic)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3870  | 
|
3871  | 
||
3872  | 
class cmd_shell_complete(Command):  | 
|
3873  | 
"""Show appropriate completions for context.  | 
|
3874  | 
||
| 
2023.1.1
by ghigo
 add topics help  | 
3875  | 
    For a list of all available commands, say 'bzr shell-complete'.
 | 
3876  | 
    """
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3877  | 
takes_args = ['context?']  | 
3878  | 
aliases = ['s-c']  | 
|
3879  | 
hidden = True  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3880  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
3881  | 
    @display_command
 | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
3882  | 
def run(self, context=None):  | 
3883  | 
import shellcomplete  | 
|
3884  | 
shellcomplete.shellcomplete(context)  | 
|
3885  | 
||
3886  | 
||
3887  | 
class cmd_missing(Command):  | 
|
| 
1185.54.3
by Aaron Bentley
 Factored out find_unmerged  | 
3888  | 
"""Show unmerged/unpulled revisions between two branches.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
3889  | 
|
| 
2023.1.1
by ghigo
 add topics help  | 
3890  | 
    OTHER_BRANCH may be local or remote.
 | 
| 
3921.3.12
by Marius Kruger
 add missing examples and NEWS  | 
3891  | 
|
| 
4156.1.1
by Vincent Ladeuil
 Trivial spelling correction to "bzr missing" documentation  | 
3892  | 
    To filter on a range of revisions, you can use the command -r begin..end
 | 
| 
3921.3.13
by Marius Kruger
 update missing documentation and blackbox test to better reflect `-r 3` behaviour.  | 
3893  | 
    -r revision requests a specific revision, -r ..end or -r begin.. are
 | 
3894  | 
    also valid.
 | 
|
3895  | 
||
| 
3921.3.12
by Marius Kruger
 add missing examples and NEWS  | 
3896  | 
    :Examples:
 | 
3897  | 
||
3898  | 
        Determine the missing revisions between this and the branch at the
 | 
|
3899  | 
        remembered pull location::
 | 
|
3900  | 
||
3901  | 
            bzr missing
 | 
|
3902  | 
||
3903  | 
        Determine the missing revisions between this and another branch::
 | 
|
3904  | 
||
3905  | 
            bzr missing http://server/branch
 | 
|
3906  | 
||
3907  | 
        Determine the missing revisions up to a specific revision on the other
 | 
|
3908  | 
        branch::
 | 
|
3909  | 
||
3910  | 
            bzr missing -r ..-10
 | 
|
3911  | 
||
3912  | 
        Determine the missing revisions up to a specific revision on this
 | 
|
3913  | 
        branch::
 | 
|
3914  | 
||
3915  | 
            bzr missing --my-revision ..-10
 | 
|
| 
2023.1.1
by ghigo
 add topics help  | 
3916  | 
    """
 | 
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
3917  | 
|
3918  | 
_see_also = ['merge', 'pull']  | 
|
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
3919  | 
takes_args = ['other_branch?']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
3920  | 
takes_options = [  | 
| 
3921.3.6
by Marius Kruger
 * fix some indentation anomalies in cmd_missing  | 
3921  | 
Option('reverse', 'Reverse the order of revisions.'),  | 
3922  | 
Option('mine-only',  | 
|
3923  | 
'Display changes in the local branch only.'),  | 
|
3924  | 
Option('this' , 'Same as --mine-only.'),  | 
|
3925  | 
Option('theirs-only',  | 
|
3926  | 
'Display changes in the remote branch only.'),  | 
|
3927  | 
Option('other', 'Same as --theirs-only.'),  | 
|
3928  | 
'log-format',  | 
|
3929  | 
'show-ids',  | 
|
3930  | 
'verbose',  | 
|
3931  | 
custom_help('revision',  | 
|
| 
3921.3.11
by Marius Kruger
 swap options as per review:  | 
3932  | 
help='Filter on other branch revisions (inclusive). '  | 
| 
3921.3.6
by Marius Kruger
 * fix some indentation anomalies in cmd_missing  | 
3933  | 
'See "help revisionspec" for details.'),  | 
| 
3921.3.11
by Marius Kruger
 swap options as per review:  | 
3934  | 
Option('my-revision',  | 
| 
3921.3.6
by Marius Kruger
 * fix some indentation anomalies in cmd_missing  | 
3935  | 
type=_parse_revision_str,  | 
| 
3921.3.11
by Marius Kruger
 swap options as per review:  | 
3936  | 
help='Filter on local branch revisions (inclusive). '  | 
| 
3921.3.6
by Marius Kruger
 * fix some indentation anomalies in cmd_missing  | 
3937  | 
'See "help revisionspec" for details.'),  | 
| 
4221.1.1
by Vincent Ladeuil
 Clarify 'missing --include-merges' help.  | 
3938  | 
Option('include-merges',  | 
3939  | 
'Show all revisions in addition to the mainline ones.'),  | 
|
| 
3921.3.6
by Marius Kruger
 * fix some indentation anomalies in cmd_missing  | 
3940  | 
        ]
 | 
| 
1816.1.2
by Alexander Belchenko
 fix non-ascii messages handling in 'missing' command  | 
3941  | 
encoding_type = 'replace'  | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
3942  | 
|
| 
1816.1.2
by Alexander Belchenko
 fix non-ascii messages handling in 'missing' command  | 
3943  | 
    @display_command
 | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
3944  | 
def run(self, other_branch=None, reverse=False, mine_only=False,  | 
| 
3677.1.1
by Vincent Ladeuil
 Begin fixing bug #233817.  | 
3945  | 
theirs_only=False,  | 
3946  | 
log_format=None, long=False, short=False, line=False,  | 
|
3947  | 
show_ids=False, verbose=False, this=False, other=False,  | 
|
| 
3921.3.11
by Marius Kruger
 swap options as per review:  | 
3948  | 
include_merges=False, revision=None, my_revision=None):  | 
| 
2466.8.1
by Kent Gibson
 Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.  | 
3949  | 
from bzrlib.missing import find_unmerged, iter_log_revisions  | 
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
3950  | 
def message(s):  | 
3951  | 
if not is_quiet():  | 
|
3952  | 
self.outf.write(s)  | 
|
| 
2528.1.1
by Martin Pool
 Better option names for missing (elliot)  | 
3953  | 
|
3954  | 
if this:  | 
|
| 
3427.3.3
by John Arbash Meinel
 Revert cmd_missing to use the original function, only now supply restrict  | 
3955  | 
mine_only = this  | 
| 
2528.1.1
by Martin Pool
 Better option names for missing (elliot)  | 
3956  | 
if other:  | 
| 
3427.3.3
by John Arbash Meinel
 Revert cmd_missing to use the original function, only now supply restrict  | 
3957  | 
theirs_only = other  | 
3958  | 
        # TODO: We should probably check that we don't have mine-only and
 | 
|
3959  | 
        #       theirs-only set, but it gets complicated because we also have
 | 
|
3960  | 
        #       this and other which could be used.
 | 
|
3961  | 
restrict = 'all'  | 
|
3962  | 
if mine_only:  | 
|
3963  | 
restrict = 'local'  | 
|
3964  | 
elif theirs_only:  | 
|
3965  | 
restrict = 'remote'  | 
|
| 
2528.1.1
by Martin Pool
 Better option names for missing (elliot)  | 
3966  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
3967  | 
local_branch = Branch.open_containing(u".")[0]  | 
| 
1185.54.16
by Aaron Bentley
 fixed location handling to match old missing  | 
3968  | 
parent = local_branch.get_parent()  | 
| 
1185.54.1
by Aaron Bentley
 Import Kinnison's plugin  | 
3969  | 
if other_branch is None:  | 
| 
1185.54.16
by Aaron Bentley
 fixed location handling to match old missing  | 
3970  | 
other_branch = parent  | 
3971  | 
if other_branch is None:  | 
|
| 
2485.8.11
by Vincent Ladeuil
 Fix some display leaks in tests.  | 
3972  | 
raise errors.BzrCommandError("No peer location known"  | 
| 
2485.8.17
by Vincent Ladeuil
 Fix the fix.  | 
3973  | 
" or specified.")  | 
| 
2193.4.1
by Alexander Belchenko
 'bzr missing' without specifying location show remembered location unescaped  | 
3974  | 
display_url = urlutils.unescape_for_display(parent,  | 
3975  | 
self.outf.encoding)  | 
|
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
3976  | 
message("Using saved parent location: "  | 
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
3977  | 
+ display_url + "\n")  | 
| 
2193.4.1
by Alexander Belchenko
 'bzr missing' without specifying location show remembered location unescaped  | 
3978  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
3979  | 
remote_branch = Branch.open(other_branch)  | 
| 
1551.2.46
by abentley
 Made bzr missing . work on win32  | 
3980  | 
if remote_branch.base == local_branch.base:  | 
3981  | 
remote_branch = local_branch  | 
|
| 
3921.3.4
by Marius Kruger
 add support to filter on local and remote revisions  | 
3982  | 
|
3983  | 
local_revid_range = _revision_range_to_revid_range(  | 
|
| 
3921.3.11
by Marius Kruger
 swap options as per review:  | 
3984  | 
_get_revision_range(my_revision, local_branch,  | 
| 
3921.3.9
by Marius Kruger
 * add some blackbox tests and another whitebox test  | 
3985  | 
self.name()))  | 
| 
3921.3.4
by Marius Kruger
 add support to filter on local and remote revisions  | 
3986  | 
|
3987  | 
remote_revid_range = _revision_range_to_revid_range(  | 
|
| 
3921.3.11
by Marius Kruger
 swap options as per review:  | 
3988  | 
_get_revision_range(revision,  | 
| 
3921.3.9
by Marius Kruger
 * add some blackbox tests and another whitebox test  | 
3989  | 
remote_branch, self.name()))  | 
| 
3921.3.4
by Marius Kruger
 add support to filter on local and remote revisions  | 
3990  | 
|
| 
1666.1.5
by Robert Collins
 Merge bound branch test performance improvements.  | 
3991  | 
local_branch.lock_read()  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
3992  | 
try:  | 
| 
1551.2.46
by abentley
 Made bzr missing . work on win32  | 
3993  | 
remote_branch.lock_read()  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
3994  | 
try:  | 
| 
3427.3.3
by John Arbash Meinel
 Revert cmd_missing to use the original function, only now supply restrict  | 
3995  | 
local_extra, remote_extra = find_unmerged(  | 
| 
3677.1.1
by Vincent Ladeuil
 Begin fixing bug #233817.  | 
3996  | 
local_branch, remote_branch, restrict,  | 
| 
3677.1.4
by Vincent Ladeuil
 Replace 'reverse' by 'backward' when talking about revision order.  | 
3997  | 
backward=not reverse,  | 
| 
3921.3.3
by Marius Kruger
 tried to add `bzr missing -r1..-1` but failed :(  | 
3998  | 
include_merges=include_merges,  | 
| 
3921.3.4
by Marius Kruger
 add support to filter on local and remote revisions  | 
3999  | 
local_revid_range=local_revid_range,  | 
| 
3921.3.6
by Marius Kruger
 * fix some indentation anomalies in cmd_missing  | 
4000  | 
remote_revid_range=remote_revid_range)  | 
| 
3427.3.1
by John Arbash Meinel
 Add bzrlib.missing.find_unmerged_mainline_revisions  | 
4001  | 
|
| 
2485.8.11
by Vincent Ladeuil
 Fix some display leaks in tests.  | 
4002  | 
if log_format is None:  | 
4003  | 
registry = log.log_formatter_registry  | 
|
4004  | 
log_format = registry.get_default(local_branch)  | 
|
| 
2221.4.10
by Aaron Bentley
 Implement log options using RegistryOption  | 
4005  | 
lf = log_format(to_file=self.outf,  | 
4006  | 
show_ids=show_ids,  | 
|
4007  | 
show_timezone='original')  | 
|
| 
3427.3.7
by John Arbash Meinel
 Update how 'bzr missing' works when given --mine-only or --theirs-only  | 
4008  | 
|
4009  | 
status_code = 0  | 
|
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
4010  | 
if local_extra and not theirs_only:  | 
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
4011  | 
message("You have %d extra revision(s):\n" %  | 
| 
3778.5.2
by Martin Pool
 review cleanups  | 
4012  | 
len(local_extra))  | 
| 
2485.8.13
by Vincent Ladeuil
 merge bzr.dev@2495  | 
4013  | 
for revision in iter_log_revisions(local_extra,  | 
| 
2466.8.1
by Kent Gibson
 Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.  | 
4014  | 
local_branch.repository,  | 
4015  | 
verbose):  | 
|
4016  | 
lf.log_revision(revision)  | 
|
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
4017  | 
printed_local = True  | 
| 
3427.3.7
by John Arbash Meinel
 Update how 'bzr missing' works when given --mine-only or --theirs-only  | 
4018  | 
status_code = 1  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
4019  | 
else:  | 
4020  | 
printed_local = False  | 
|
| 
3427.3.7
by John Arbash Meinel
 Update how 'bzr missing' works when given --mine-only or --theirs-only  | 
4021  | 
|
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
4022  | 
if remote_extra and not mine_only:  | 
4023  | 
if printed_local is True:  | 
|
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
4024  | 
message("\n\n\n")  | 
4025  | 
message("You are missing %d revision(s):\n" %  | 
|
| 
3778.5.2
by Martin Pool
 review cleanups  | 
4026  | 
len(remote_extra))  | 
| 
2485.8.13
by Vincent Ladeuil
 merge bzr.dev@2495  | 
4027  | 
for revision in iter_log_revisions(remote_extra,  | 
4028  | 
remote_branch.repository,  | 
|
| 
2466.8.1
by Kent Gibson
 Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.  | 
4029  | 
verbose):  | 
4030  | 
lf.log_revision(revision)  | 
|
| 
3427.3.7
by John Arbash Meinel
 Update how 'bzr missing' works when given --mine-only or --theirs-only  | 
4031  | 
status_code = 1  | 
4032  | 
||
4033  | 
if mine_only and not local_extra:  | 
|
4034  | 
                    # We checked local, and found nothing extra
 | 
|
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
4035  | 
message('This branch is up to date.\n')  | 
| 
3427.3.7
by John Arbash Meinel
 Update how 'bzr missing' works when given --mine-only or --theirs-only  | 
4036  | 
elif theirs_only and not remote_extra:  | 
4037  | 
                    # We checked remote, and found nothing extra
 | 
|
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
4038  | 
message('Other branch is up to date.\n')  | 
| 
3427.3.7
by John Arbash Meinel
 Update how 'bzr missing' works when given --mine-only or --theirs-only  | 
4039  | 
elif not (mine_only or theirs_only or local_extra or  | 
4040  | 
remote_extra):  | 
|
4041  | 
                    # We checked both branches, and neither one had extra
 | 
|
4042  | 
                    # revisions
 | 
|
| 
3778.5.1
by Martin Pool
 missing -q is quieter (#284748)  | 
4043  | 
message("Branches are up to date.\n")  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
4044  | 
finally:  | 
| 
1666.1.5
by Robert Collins
 Merge bound branch test performance improvements.  | 
4045  | 
remote_branch.unlock()  | 
4046  | 
finally:  | 
|
4047  | 
local_branch.unlock()  | 
|
4048  | 
if not status_code and parent is None and other_branch is not None:  | 
|
4049  | 
local_branch.lock_write()  | 
|
4050  | 
try:  | 
|
4051  | 
                # handle race conditions - a parent might be set while we run.
 | 
|
4052  | 
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  | 
4053  | 
local_branch.set_parent(remote_branch.base)  | 
| 
1594.3.6
by Robert Collins
 Take out appropriate locks for missing.  | 
4054  | 
finally:  | 
4055  | 
local_branch.unlock()  | 
|
| 
1666.1.5
by Robert Collins
 Merge bound branch test performance improvements.  | 
4056  | 
return status_code  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
4057  | 
|
4058  | 
||
| 
2604.2.1
by Robert Collins
 (robertc) Introduce a pack command.  | 
4059  | 
class cmd_pack(Command):  | 
4060  | 
"""Compress the data within a repository."""  | 
|
4061  | 
||
4062  | 
_see_also = ['repositories']  | 
|
4063  | 
takes_args = ['branch_or_repo?']  | 
|
4064  | 
||
4065  | 
def run(self, branch_or_repo='.'):  | 
|
4066  | 
dir = bzrdir.BzrDir.open_containing(branch_or_repo)[0]  | 
|
4067  | 
try:  | 
|
4068  | 
branch = dir.open_branch()  | 
|
4069  | 
repository = branch.repository  | 
|
4070  | 
except errors.NotBranchError:  | 
|
4071  | 
repository = dir.open_repository()  | 
|
4072  | 
repository.pack()  | 
|
4073  | 
||
4074  | 
||
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
4075  | 
class cmd_plugins(Command):  | 
| 
2617.3.1
by Ian Clatworthy
 Make the plugins command public with better help  | 
4076  | 
"""List the installed plugins.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4077  | 
|
| 
3193.2.3
by Alexander Belchenko
 another formatting variant suggested by John Meinel.  | 
4078  | 
    This command displays the list of installed plugins including
 | 
4079  | 
    version of plugin and a short description of each.
 | 
|
4080  | 
||
4081  | 
    --verbose shows the path where each plugin is located.
 | 
|
| 
2617.3.1
by Ian Clatworthy
 Make the plugins command public with better help  | 
4082  | 
|
4083  | 
    A plugin is an external component for Bazaar that extends the
 | 
|
4084  | 
    revision control system, by adding or replacing code in Bazaar.
 | 
|
4085  | 
    Plugins can do a variety of things, including overriding commands,
 | 
|
4086  | 
    adding new commands, providing additional network transports and
 | 
|
4087  | 
    customizing log output.
 | 
|
4088  | 
||
4089  | 
    See the Bazaar web site, http://bazaar-vcs.org, for further
 | 
|
4090  | 
    information on plugins including where to find them and how to
 | 
|
4091  | 
    install them. Instructions are also provided there on how to
 | 
|
4092  | 
    write new plugins using the Python programming language.
 | 
|
4093  | 
    """
 | 
|
| 
3193.2.3
by Alexander Belchenko
 another formatting variant suggested by John Meinel.  | 
4094  | 
takes_options = ['verbose']  | 
| 
2629.1.1
by Ian Clatworthy
 (Ian Clatworthy) Tweak the 'make plugins public' change following feedback from lifeless  | 
4095  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
4096  | 
    @display_command
 | 
| 
3193.2.3
by Alexander Belchenko
 another formatting variant suggested by John Meinel.  | 
4097  | 
def run(self, verbose=False):  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
4098  | 
import bzrlib.plugin  | 
4099  | 
from inspect import getdoc  | 
|
| 
3193.2.2
by Alexander Belchenko
 new formatting of `bzr plugins` output.  | 
4100  | 
result = []  | 
| 
2762.2.1
by Robert Collins
 * ``bzr plugins`` now lists the version number for each plugin in square  | 
4101  | 
for name, plugin in bzrlib.plugin.plugins().items():  | 
| 
3193.2.2
by Alexander Belchenko
 new formatting of `bzr plugins` output.  | 
4102  | 
version = plugin.__version__  | 
4103  | 
if version == 'unknown':  | 
|
4104  | 
version = ''  | 
|
4105  | 
name_ver = '%s %s' % (name, version)  | 
|
| 
2762.2.1
by Robert Collins
 * ``bzr plugins`` now lists the version number for each plugin in square  | 
4106  | 
d = getdoc(plugin.module)  | 
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
4107  | 
if d:  | 
| 
3193.2.2
by Alexander Belchenko
 new formatting of `bzr plugins` output.  | 
4108  | 
doc = d.split('\n')[0]  | 
4109  | 
else:  | 
|
4110  | 
doc = '(no description)'  | 
|
4111  | 
result.append((name_ver, doc, plugin.path()))  | 
|
| 
3193.2.3
by Alexander Belchenko
 another formatting variant suggested by John Meinel.  | 
4112  | 
for name_ver, doc, path in sorted(result):  | 
4113  | 
print name_ver  | 
|
4114  | 
print ' ', doc  | 
|
4115  | 
if verbose:  | 
|
4116  | 
print ' ', path  | 
|
4117  | 
            print
 | 
|
| 
1147
by Martin Pool
 - split builtin commands into separate module bzrlib.builtins;  | 
4118  | 
|
4119  | 
||
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
4120  | 
class cmd_testament(Command):  | 
4121  | 
"""Show testament (signing-form) of a revision."""  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4122  | 
takes_options = [  | 
4123  | 
'revision',  | 
|
4124  | 
Option('long', help='Produce long-format testament.'),  | 
|
4125  | 
Option('strict',  | 
|
4126  | 
help='Produce a strict-format testament.')]  | 
|
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
4127  | 
takes_args = ['branch?']  | 
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
4128  | 
    @display_command
 | 
| 
1551.7.1
by Aaron Bentley
 Implement --strict at commandline, fix up strict format  | 
4129  | 
def run(self, branch=u'.', revision=None, long=False, strict=False):  | 
4130  | 
from bzrlib.testament import Testament, StrictTestament  | 
|
4131  | 
if strict is True:  | 
|
4132  | 
testament_class = StrictTestament  | 
|
4133  | 
else:  | 
|
4134  | 
testament_class = Testament  | 
|
| 
3530.2.1
by John Arbash Meinel
 'bzr testament' should just open the branch  | 
4135  | 
if branch == '.':  | 
4136  | 
b = Branch.open_containing(branch)[0]  | 
|
4137  | 
else:  | 
|
4138  | 
b = Branch.open(branch)  | 
|
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
4139  | 
b.lock_read()  | 
4140  | 
try:  | 
|
4141  | 
if revision is None:  | 
|
4142  | 
rev_id = b.last_revision()  | 
|
4143  | 
else:  | 
|
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
4144  | 
rev_id = revision[0].as_revision_id(b)  | 
| 
1551.7.1
by Aaron Bentley
 Implement --strict at commandline, fix up strict format  | 
4145  | 
t = testament_class.from_revision(b.repository, rev_id)  | 
| 
1185.16.24
by Martin Pool
 - add and test 'testament' builtin command  | 
4146  | 
if long:  | 
4147  | 
sys.stdout.writelines(t.as_text_lines())  | 
|
4148  | 
else:  | 
|
4149  | 
sys.stdout.write(t.as_short_text())  | 
|
4150  | 
finally:  | 
|
4151  | 
b.unlock()  | 
|
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4152  | 
|
4153  | 
||
4154  | 
class cmd_annotate(Command):  | 
|
4155  | 
"""Show the origin of each line in a file.  | 
|
4156  | 
||
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
4157  | 
    This prints out the given file with an annotation on the left side
 | 
4158  | 
    indicating which revision, author and date introduced the change.
 | 
|
4159  | 
||
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4160  | 
    If the origin is the same for a run of consecutive lines, it is
 | 
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
4161  | 
    shown only at the top, unless the --all option is given.
 | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4162  | 
    """
 | 
4163  | 
    # TODO: annotate directories; showing when each file was last changed
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4164  | 
    # TODO: if the working copy is modified, show annotations on that
 | 
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
4165  | 
    #       with new uncommitted lines marked
 | 
| 
1733.2.8
by Michael Ellerman
 Add CVS compatible aliases for checkout and annotate, from fullermd.  | 
4166  | 
aliases = ['ann', 'blame', 'praise']  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4167  | 
takes_args = ['filename']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4168  | 
takes_options = [Option('all', help='Show annotations on all lines.'),  | 
4169  | 
Option('long', help='Show commit date in annotations.'),  | 
|
| 
2182.3.1
by John Arbash Meinel
 Annotate now shows dotted revnos instead of plain revnos.  | 
4170  | 
'revision',  | 
4171  | 
'show-ids',  | 
|
| 
1185.16.53
by Martin Pool
 - annotate improvements from Goffreddo, with extra bug fixes and tests  | 
4172  | 
                     ]
 | 
| 
2593.1.1
by Adeodato Simó
 Improve annotate to prevent unicode exceptions in certain situations.  | 
4173  | 
encoding_type = 'exact'  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4174  | 
|
| 
1185.12.56
by Aaron Bentley
 Prevented display commands from printing broken pipe errors  | 
4175  | 
    @display_command
 | 
| 
2182.3.1
by John Arbash Meinel
 Annotate now shows dotted revnos instead of plain revnos.  | 
4176  | 
def run(self, filename, all=False, long=False, revision=None,  | 
4177  | 
show_ids=False):  | 
|
| 
3603.4.1
by Robert Collins
 Implement lookups into the current working tree for bzr annotate, fixing bug 3439.  | 
4178  | 
from bzrlib.annotate import annotate_file, annotate_file_tree  | 
| 
3146.2.1
by Lukáš Lalinský
 Don't require a working tree in cmd_annotate.  | 
4179  | 
wt, branch, relpath = \  | 
4180  | 
bzrdir.BzrDir.open_containing_tree_or_branch(filename)  | 
|
4181  | 
if wt is not None:  | 
|
4182  | 
wt.lock_read()  | 
|
4183  | 
else:  | 
|
4184  | 
branch.lock_read()  | 
|
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4185  | 
try:  | 
| 
3732.1.1
by Ian Clatworthy
 fix bzr st -rbranch:path-to-branch (Lukas Lalinsky)  | 
4186  | 
tree = _get_one_revision_tree('annotate', revision, branch=branch)  | 
| 
3146.2.1
by Lukáš Lalinský
 Don't require a working tree in cmd_annotate.  | 
4187  | 
if wt is not None:  | 
4188  | 
file_id = wt.path2id(relpath)  | 
|
4189  | 
else:  | 
|
4190  | 
file_id = tree.path2id(relpath)  | 
|
| 
2561.2.1
by James Westby
 Display a useful error message when annotating a non-existant file (#122656)  | 
4191  | 
if file_id is None:  | 
| 
2561.2.2
by James Westby
 Fix up with comments from Aaron.  | 
4192  | 
raise errors.NotVersionedError(filename)  | 
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4193  | 
file_version = tree.inventory[file_id].revision  | 
| 
3603.4.1
by Robert Collins
 Implement lookups into the current working tree for bzr annotate, fixing bug 3439.  | 
4194  | 
if wt is not None and revision is None:  | 
4195  | 
                # If there is a tree and we're not annotating historical
 | 
|
4196  | 
                # versions, annotate the working tree's content.
 | 
|
4197  | 
annotate_file_tree(wt, file_id, self.outf, long, all,  | 
|
4198  | 
show_ids=show_ids)  | 
|
4199  | 
else:  | 
|
4200  | 
annotate_file(branch, file_version, file_id, long, all, self.outf,  | 
|
4201  | 
show_ids=show_ids)  | 
|
| 
1185.16.32
by Martin Pool
 - add a basic annotate built-in command  | 
4202  | 
finally:  | 
| 
3146.2.1
by Lukáš Lalinský
 Don't require a working tree in cmd_annotate.  | 
4203  | 
if wt is not None:  | 
4204  | 
wt.unlock()  | 
|
4205  | 
else:  | 
|
4206  | 
branch.unlock()  | 
|
| 
1185.16.33
by Martin Pool
 - move 'conflict' and 'resolved' from shipped plugin to regular builtins  | 
4207  | 
|
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
4208  | 
|
4209  | 
class cmd_re_sign(Command):  | 
|
4210  | 
"""Create a digital signature for an existing revision."""  | 
|
4211  | 
    # TODO be able to replace existing ones.
 | 
|
4212  | 
||
4213  | 
hidden = True # is this right ?  | 
|
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
4214  | 
takes_args = ['revision_id*']  | 
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
4215  | 
takes_options = ['revision']  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4216  | 
|
| 
1185.78.1
by John Arbash Meinel
 Updating bzr re-sign to allow multiple arguments, and updating tests  | 
4217  | 
def run(self, revision_id_list=None, revision=None):  | 
4218  | 
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  | 
4219  | 
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  | 
4220  | 
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  | 
4221  | 
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)  | 
4222  | 
b = WorkingTree.open_containing(u'.')[0].branch  | 
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
4223  | 
b.lock_write()  | 
4224  | 
try:  | 
|
4225  | 
return self._run(b, revision_id_list, revision)  | 
|
4226  | 
finally:  | 
|
4227  | 
b.unlock()  | 
|
4228  | 
||
4229  | 
def _run(self, b, revision_id_list, revision):  | 
|
4230  | 
import bzrlib.gpg as gpg  | 
|
| 
1770.2.9
by Aaron Bentley
 Add Branch.get_config, update BranchConfig() callers  | 
4231  | 
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  | 
4232  | 
if revision_id_list is not None:  | 
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
4233  | 
b.repository.start_write_group()  | 
4234  | 
try:  | 
|
4235  | 
for revision_id in revision_id_list:  | 
|
4236  | 
b.repository.sign_revision(revision_id, gpg_strategy)  | 
|
4237  | 
except:  | 
|
4238  | 
b.repository.abort_write_group()  | 
|
4239  | 
                raise
 | 
|
4240  | 
else:  | 
|
4241  | 
b.repository.commit_write_group()  | 
|
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
4242  | 
elif revision is not None:  | 
| 
1483
by Robert Collins
 BUGFIX: re-sign should accept ranges  | 
4243  | 
if len(revision) == 1:  | 
4244  | 
revno, rev_id = revision[0].in_history(b)  | 
|
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
4245  | 
b.repository.start_write_group()  | 
4246  | 
try:  | 
|
4247  | 
b.repository.sign_revision(rev_id, gpg_strategy)  | 
|
4248  | 
except:  | 
|
4249  | 
b.repository.abort_write_group()  | 
|
4250  | 
                    raise
 | 
|
4251  | 
else:  | 
|
4252  | 
b.repository.commit_write_group()  | 
|
| 
1483
by Robert Collins
 BUGFIX: re-sign should accept ranges  | 
4253  | 
elif len(revision) == 2:  | 
4254  | 
                # are they both on rh- if so we can walk between them
 | 
|
4255  | 
                # might be nice to have a range helper for arbitrary
 | 
|
4256  | 
                # revision paths. hmm.
 | 
|
4257  | 
from_revno, from_revid = revision[0].in_history(b)  | 
|
4258  | 
to_revno, to_revid = revision[1].in_history(b)  | 
|
4259  | 
if to_revid is None:  | 
|
4260  | 
to_revno = b.revno()  | 
|
4261  | 
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  | 
4262  | 
raise errors.BzrCommandError('Cannot sign a range of non-revision-history revisions')  | 
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
4263  | 
b.repository.start_write_group()  | 
4264  | 
try:  | 
|
4265  | 
for revno in range(from_revno, to_revno + 1):  | 
|
4266  | 
b.repository.sign_revision(b.get_rev_id(revno),  | 
|
4267  | 
gpg_strategy)  | 
|
4268  | 
except:  | 
|
4269  | 
b.repository.abort_write_group()  | 
|
4270  | 
                    raise
 | 
|
4271  | 
else:  | 
|
4272  | 
b.repository.commit_write_group()  | 
|
| 
1483
by Robert Collins
 BUGFIX: re-sign should accept ranges  | 
4273  | 
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  | 
4274  | 
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.  | 
4275  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
4276  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4277  | 
class cmd_bind(Command):  | 
| 
2270.1.2
by John Arbash Meinel
 Tweak the help text for bind/unbind according to Robert's suggestions.  | 
4278  | 
"""Convert the current branch into a checkout of the supplied branch.  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4279  | 
|
| 
2270.1.2
by John Arbash Meinel
 Tweak the help text for bind/unbind according to Robert's suggestions.  | 
4280  | 
    Once converted into a checkout, commits must succeed on the master branch
 | 
4281  | 
    before they will be applied to the local branch.
 | 
|
| 
3565.6.15
by Marius Kruger
 update bind and switch command descriptions to state what will happen to nicknames.  | 
4282  | 
|
| 
3565.6.16
by Marius Kruger
 update nick command description to mention how it works for bound branches,  | 
4283  | 
    Bound branches use the nickname of its master branch unless it is set
 | 
| 
3565.6.15
by Marius Kruger
 update bind and switch command descriptions to state what will happen to nicknames.  | 
4284  | 
    locally, in which case binding will update the the local nickname to be
 | 
4285  | 
    that of the master.
 | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4286  | 
    """
 | 
4287  | 
||
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
4288  | 
_see_also = ['checkouts', 'unbind']  | 
| 
2230.3.31
by Aaron Bentley
 Implement re-binding previously-bound branches  | 
4289  | 
takes_args = ['location?']  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4290  | 
takes_options = []  | 
4291  | 
||
4292  | 
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  | 
4293  | 
b, relpath = Branch.open_containing(u'.')  | 
| 
2230.3.31
by Aaron Bentley
 Implement re-binding previously-bound branches  | 
4294  | 
if location is None:  | 
4295  | 
try:  | 
|
4296  | 
location = b.get_old_bound_location()  | 
|
4297  | 
except errors.UpgradeRequired:  | 
|
4298  | 
raise errors.BzrCommandError('No location supplied. '  | 
|
4299  | 
'This format does not remember old locations.')  | 
|
4300  | 
else:  | 
|
4301  | 
if location is None:  | 
|
| 
2230.3.45
by Aaron Bentley
 Change error message (mpool)  | 
4302  | 
raise errors.BzrCommandError('No location supplied and no '  | 
4303  | 
'previous location known')  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4304  | 
b_other = Branch.open(location)  | 
| 
1505.1.3
by John Arbash Meinel
 (broken) Adding more tests, and some functionality  | 
4305  | 
try:  | 
4306  | 
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  | 
4307  | 
except errors.DivergedBranches:  | 
4308  | 
raise errors.BzrCommandError('These branches have diverged.'  | 
|
4309  | 
' Try merging, and then bind again.')  | 
|
| 
3565.6.11
by Marius Kruger
 Bind now updates explicit nicks  | 
4310  | 
if b.get_config().has_explicit_nickname():  | 
4311  | 
b.nick = b_other.nick  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4312  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
4313  | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4314  | 
class cmd_unbind(Command):  | 
| 
2270.1.2
by John Arbash Meinel
 Tweak the help text for bind/unbind according to Robert's suggestions.  | 
4315  | 
"""Convert the current checkout into a regular branch.  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4316  | 
|
| 
2270.1.2
by John Arbash Meinel
 Tweak the help text for bind/unbind according to Robert's suggestions.  | 
4317  | 
    After unbinding, the local branch is considered independent and subsequent
 | 
4318  | 
    commits will be local only.
 | 
|
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4319  | 
    """
 | 
4320  | 
||
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
4321  | 
_see_also = ['checkouts', 'bind']  | 
| 
1505.1.2
by John Arbash Meinel
 (broken) working on implementing bound branches.  | 
4322  | 
takes_args = []  | 
4323  | 
takes_options = []  | 
|
4324  | 
||
4325  | 
def run(self):  | 
|
| 
1505.1.22
by John Arbash Meinel
 Some small cleanup and discussion in preparation for modifying commit, pull, and merge  | 
4326  | 
b, relpath = Branch.open_containing(u'.')  | 
4327  | 
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  | 
4328  | 
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  | 
4329  | 
|
| 
1442.1.59
by Robert Collins
 Add re-sign command to generate a digital signature on a single revision.  | 
4330  | 
|
| 
1773.4.1
by Martin Pool
 Add pyflakes makefile target; fix many warnings  | 
4331  | 
class cmd_uncommit(Command):  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4332  | 
"""Remove the last committed revision.  | 
4333  | 
||
4334  | 
    --verbose will print out what is being removed.
 | 
|
4335  | 
    --dry-run will go through all the motions, but not actually
 | 
|
4336  | 
    remove anything.
 | 
|
| 
2747.2.1
by Daniel Watkins
 Modified the help message of 'uncommit'.  | 
4337  | 
|
4338  | 
    If --revision is specified, uncommit revisions to leave the branch at the
 | 
|
4339  | 
    specified revision.  For example, "bzr uncommit -r 15" will leave the
 | 
|
4340  | 
    branch at revision 15.
 | 
|
4341  | 
||
| 
1551.19.39
by Aaron Bentley
 Update 'uncommit' docs  | 
4342  | 
    Uncommit leaves the working tree ready for a new commit.  The only change
 | 
4343  | 
    it may make is to restore any pending merges that were present before
 | 
|
4344  | 
    the commit.
 | 
|
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
4345  | 
    """
 | 
| 
1185.62.11
by John Arbash Meinel
 Added TODO for bzr uncommit to remove unreferenced information.  | 
4346  | 
|
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
4347  | 
    # TODO: jam 20060108 Add an option to allow uncommit to remove
 | 
| 
1759.2.1
by Jelmer Vernooij
 Fix some types (found using aspell).  | 
4348  | 
    # unreferenced information in 'branch-as-repository' branches.
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
4349  | 
    # TODO: jam 20060108 Add the ability for uncommit to remove unreferenced
 | 
4350  | 
    # information in shared branches as well.
 | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
4351  | 
_see_also = ['commit']  | 
| 
1185.62.10
by John Arbash Meinel
 Removed --all from bzr uncommit, it was broken anyway.  | 
4352  | 
takes_options = ['verbose', 'revision',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4353  | 
Option('dry-run', help='Don\'t actually make changes.'),  | 
| 
3280.4.1
by John Arbash Meinel
 Add uncommit --local.  | 
4354  | 
Option('force', help='Say yes to all questions.'),  | 
4355  | 
Option('local',  | 
|
4356  | 
help="Only remove the commits from the local branch"  | 
|
4357  | 
                                " when in a checkout."
 | 
|
4358  | 
                           ),
 | 
|
4359  | 
                    ]
 | 
|
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4360  | 
takes_args = ['location?']  | 
4361  | 
aliases = []  | 
|
| 
3101.1.1
by Aaron Bentley
 Uncommit doesn't throw when it encounters un-encodable characters  | 
4362  | 
encoding_type = 'replace'  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4363  | 
|
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
4364  | 
def run(self, location=None,  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4365  | 
dry_run=False, verbose=False,  | 
| 
3280.4.1
by John Arbash Meinel
 Add uncommit --local.  | 
4366  | 
revision=None, force=False, local=False):  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4367  | 
if location is None:  | 
| 
1185.33.66
by Martin Pool
 [patch] use unicode literals for all hardcoded paths (Alexander Belchenko)  | 
4368  | 
location = u'.'  | 
| 
1558.1.12
by Aaron Bentley
 Got uncommit working properly with checkouts  | 
4369  | 
control, relpath = bzrdir.BzrDir.open_containing(location)  | 
4370  | 
try:  | 
|
4371  | 
tree = control.open_workingtree()  | 
|
| 
1558.9.1
by Aaron Bentley
 Fix uncommit to handle bound branches, and to do locking  | 
4372  | 
b = tree.branch  | 
| 
1558.1.12
by Aaron Bentley
 Got uncommit working properly with checkouts  | 
4373  | 
except (errors.NoWorkingTree, errors.NotLocalUrl):  | 
4374  | 
tree = None  | 
|
| 
1558.9.1
by Aaron Bentley
 Fix uncommit to handle bound branches, and to do locking  | 
4375  | 
b = control.open_branch()  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4376  | 
|
| 
3065.2.2
by John Arbash Meinel
 During bzr uncommit, lock the working tree if it is available.  | 
4377  | 
if tree is not None:  | 
4378  | 
tree.lock_write()  | 
|
4379  | 
else:  | 
|
4380  | 
b.lock_write()  | 
|
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4381  | 
try:  | 
| 
3280.4.1
by John Arbash Meinel
 Add uncommit --local.  | 
4382  | 
return self._run(b, tree, dry_run, verbose, revision, force,  | 
4383  | 
local=local)  | 
|
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4384  | 
finally:  | 
| 
3065.2.2
by John Arbash Meinel
 During bzr uncommit, lock the working tree if it is available.  | 
4385  | 
if tree is not None:  | 
4386  | 
tree.unlock()  | 
|
4387  | 
else:  | 
|
4388  | 
b.unlock()  | 
|
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4389  | 
|
| 
3280.4.1
by John Arbash Meinel
 Add uncommit --local.  | 
4390  | 
def _run(self, b, tree, dry_run, verbose, revision, force, local=False):  | 
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4391  | 
from bzrlib.log import log_formatter, show_log  | 
4392  | 
from bzrlib.uncommit import uncommit  | 
|
4393  | 
||
4394  | 
last_revno, last_rev_id = b.last_revision_info()  | 
|
4395  | 
||
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
4396  | 
rev_id = None  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4397  | 
if revision is None:  | 
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4398  | 
revno = last_revno  | 
4399  | 
rev_id = last_rev_id  | 
|
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4400  | 
else:  | 
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
4401  | 
            # 'bzr uncommit -r 10' actually means uncommit
 | 
4402  | 
            # so that the final tree is at revno 10.
 | 
|
4403  | 
            # but bzrlib.uncommit.uncommit() actually uncommits
 | 
|
4404  | 
            # the revisions that are supplied.
 | 
|
4405  | 
            # So we need to offset it by one
 | 
|
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4406  | 
revno = revision[0].in_history(b).revno + 1  | 
4407  | 
if revno <= last_revno:  | 
|
4408  | 
rev_id = b.get_rev_id(revno)  | 
|
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
4409  | 
|
| 
2948.2.2
by John Arbash Meinel
 Re-introduce the None check in case someone asks to uncommit *to* the last revision  | 
4410  | 
if rev_id is None or _mod_revision.is_null(rev_id):  | 
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
4411  | 
self.outf.write('No revisions to uncommit.\n')  | 
4412  | 
return 1  | 
|
4413  | 
||
4414  | 
lf = log_formatter('short',  | 
|
4415  | 
to_file=self.outf,  | 
|
| 
3629.1.2
by John Arbash Meinel
 Change to just display the command to restore the tip,  | 
4416  | 
show_timezone='original')  | 
| 
1850.3.2
by John Arbash Meinel
 Change uncommit -r 10 so that it uncommits *to* 10, rather than removing 10  | 
4417  | 
|
4418  | 
show_log(b,  | 
|
4419  | 
lf,  | 
|
4420  | 
verbose=False,  | 
|
4421  | 
direction='forward',  | 
|
4422  | 
start_revision=revno,  | 
|
| 
3065.2.1
by Lukáš Lalinský
 Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.  | 
4423  | 
end_revision=last_revno)  | 
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4424  | 
|
4425  | 
if dry_run:  | 
|
4426  | 
print 'Dry-run, pretending to remove the above revisions.'  | 
|
4427  | 
if not force:  | 
|
4428  | 
val = raw_input('Press <enter> to continue')  | 
|
4429  | 
else:  | 
|
4430  | 
print 'The above revision(s) will be removed.'  | 
|
4431  | 
if not force:  | 
|
4432  | 
val = raw_input('Are you sure [y/N]? ')  | 
|
4433  | 
if val.lower() not in ('y', 'yes'):  | 
|
4434  | 
print 'Canceled'  | 
|
4435  | 
return 0  | 
|
4436  | 
||
| 
3629.1.1
by John Arbash Meinel
 Change 'bzr uncommit' to display the revision ids and log them.  | 
4437  | 
mutter('Uncommitting from {%s} to {%s}',  | 
4438  | 
last_rev_id, rev_id)  | 
|
| 
1558.1.12
by Aaron Bentley
 Got uncommit working properly with checkouts  | 
4439  | 
uncommit(b, tree=tree, dry_run=dry_run, verbose=verbose,  | 
| 
3280.4.1
by John Arbash Meinel
 Add uncommit --local.  | 
4440  | 
revno=revno, local=local)  | 
| 
3629.1.2
by John Arbash Meinel
 Change to just display the command to restore the tip,  | 
4441  | 
note('You can restore the old tip by running:\n'  | 
4442  | 
' bzr pull . -r revid:%s', last_rev_id)  | 
|
| 
1185.31.24
by John Arbash Meinel
 [merge] Added the uncommit plugin  | 
4443  | 
|
4444  | 
||
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
4445  | 
class cmd_break_lock(Command):  | 
4446  | 
"""Break a dead lock on a repository, branch or working directory.  | 
|
4447  | 
||
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
4448  | 
    CAUTION: Locks should only be broken when you are sure that the process
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
4449  | 
    holding the lock has been stopped.
 | 
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
4450  | 
|
4451  | 
    You can get information on what locks are open via the 'bzr info' command.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4452  | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
4453  | 
    :Examples:
 | 
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
4454  | 
        bzr break-lock
 | 
| 
1553.5.34
by Martin Pool
 Stub lock-breaking command  | 
4455  | 
    """
 | 
| 
1687.1.12
by Robert Collins
 Hook in the full break-lock ui.  | 
4456  | 
takes_args = ['location?']  | 
4457  | 
||
4458  | 
def run(self, location=None, show=False):  | 
|
4459  | 
if location is None:  | 
|
4460  | 
location = u'.'  | 
|
4461  | 
control, relpath = bzrdir.BzrDir.open_containing(location)  | 
|
| 
1687.1.17
by Robert Collins
 Test break lock on old format branches.  | 
4462  | 
try:  | 
4463  | 
control.break_lock()  | 
|
4464  | 
except NotImplementedError:  | 
|
4465  | 
            pass
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4466  | 
|
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
4467  | 
|
| 
1910.17.2
by Andrew Bennetts
 Add start_bzr_subprocess and stop_bzr_subprocess to allow test code to continue  | 
4468  | 
class cmd_wait_until_signalled(Command):  | 
4469  | 
"""Test helper for test_start_and_stop_bzr_subprocess_send_signal.  | 
|
4470  | 
||
4471  | 
    This just prints a line to signal when it is ready, then blocks on stdin.
 | 
|
4472  | 
    """
 | 
|
4473  | 
||
4474  | 
hidden = True  | 
|
4475  | 
||
4476  | 
def run(self):  | 
|
| 
1910.17.6
by Andrew Bennetts
 Use sys.stdout consistently, rather than mixed with print.  | 
4477  | 
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  | 
4478  | 
sys.stdout.flush()  | 
4479  | 
sys.stdin.readline()  | 
|
4480  | 
||
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
4481  | 
|
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4482  | 
class cmd_serve(Command):  | 
| 
2020.1.1
by Robert Collins
 Add readonly support to the smart server, enabled by default via `bzr server`.  | 
4483  | 
"""Run the bzr server."""  | 
4484  | 
||
4485  | 
aliases = ['server']  | 
|
4486  | 
||
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4487  | 
takes_options = [  | 
4488  | 
Option('inet',  | 
|
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4489  | 
help='Serve on stdin/out for use from inetd or sshd.'),  | 
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4490  | 
Option('port',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4491  | 
help='Listen for connections on nominated port of the form '  | 
4492  | 
                    '[hostname:]portnumber.  Passing 0 as the port number will '
 | 
|
4493  | 
                    'result in a dynamically allocated port.  The default port is '
 | 
|
| 
2298.4.1
by Andrew Bennetts
 Give bzr:// a default port of 4155.  | 
4494  | 
'4155.',  | 
| 
1910.19.7
by Andrew Bennetts
 Allow specifying the host/interface to bzr serve, and use the new test  | 
4495  | 
type=str),  | 
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4496  | 
Option('directory',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4497  | 
help='Serve contents of this directory.',  | 
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4498  | 
type=unicode),  | 
| 
2020.1.1
by Robert Collins
 Add readonly support to the smart server, enabled by default via `bzr server`.  | 
4499  | 
Option('allow-writes',  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4500  | 
help='By default the server is a readonly server. Supplying '  | 
| 
2020.1.1
by Robert Collins
 Add readonly support to the smart server, enabled by default via `bzr server`.  | 
4501  | 
                    '--allow-writes enables write access to the contents of '
 | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4502  | 
                    'the served directory and below.'
 | 
| 
2020.1.1
by Robert Collins
 Add readonly support to the smart server, enabled by default via `bzr server`.  | 
4503  | 
                ),
 | 
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4504  | 
        ]
 | 
4505  | 
||
| 
3955.1.3
by Jonathan Lange
 Rename run_server to run_smart_server.  | 
4506  | 
def run_smart_server(self, smart_server):  | 
| 
3955.1.1
by Jonathan Lange
 Extract the bit of run() that runs the server.  | 
4507  | 
"""Run 'smart_server' forever, with no UI output at all."""  | 
4508  | 
        # For the duration of this server, no UI output is permitted. note
 | 
|
4509  | 
        # that this may cause problems with blackbox tests. This should be
 | 
|
4510  | 
        # changed with care though, as we dont want to use bandwidth sending
 | 
|
4511  | 
        # progress over stderr to smart server clients!
 | 
|
4512  | 
from bzrlib import lockdir  | 
|
4513  | 
old_factory = ui.ui_factory  | 
|
4514  | 
old_lockdir_timeout = lockdir._DEFAULT_TIMEOUT_SECONDS  | 
|
4515  | 
try:  | 
|
4516  | 
ui.ui_factory = ui.SilentUIFactory()  | 
|
4517  | 
lockdir._DEFAULT_TIMEOUT_SECONDS = 0  | 
|
4518  | 
smart_server.serve()  | 
|
4519  | 
finally:  | 
|
4520  | 
ui.ui_factory = old_factory  | 
|
4521  | 
lockdir._DEFAULT_TIMEOUT_SECONDS = old_lockdir_timeout  | 
|
4522  | 
||
| 
3955.1.4
by Jonathan Lange
 Docstrings and extraction of method to get the smart server.  | 
4523  | 
def get_host_and_port(self, port):  | 
4524  | 
"""Return the host and port to run the smart server on.  | 
|
4525  | 
||
4526  | 
        If 'port' is None, the default host (`medium.BZR_DEFAULT_INTERFACE`)
 | 
|
4527  | 
        and port (`medium.BZR_DEFAULT_PORT`) will be used.
 | 
|
4528  | 
||
4529  | 
        If 'port' has a colon in it, the string before the colon will be
 | 
|
4530  | 
        interpreted as the host.
 | 
|
4531  | 
||
4532  | 
        :param port: A string of the port to run the server on.
 | 
|
4533  | 
        :return: A tuple of (host, port), where 'host' is a host name or IP,
 | 
|
4534  | 
            and port is an integer TCP/IP port.
 | 
|
4535  | 
        """
 | 
|
| 
3955.1.2
by Jonathan Lange
 Extract the port-getting logic. Use note() rather than print()  | 
4536  | 
from bzrlib.smart import medium  | 
4537  | 
host = medium.BZR_DEFAULT_INTERFACE  | 
|
4538  | 
if port is None:  | 
|
4539  | 
port = medium.BZR_DEFAULT_PORT  | 
|
4540  | 
else:  | 
|
4541  | 
if ':' in port:  | 
|
4542  | 
host, port = port.split(':')  | 
|
4543  | 
port = int(port)  | 
|
4544  | 
return host, port  | 
|
4545  | 
||
| 
3955.1.4
by Jonathan Lange
 Docstrings and extraction of method to get the smart server.  | 
4546  | 
def get_smart_server(self, transport, inet, port):  | 
4547  | 
"""Construct a smart server.  | 
|
4548  | 
||
4549  | 
        :param transport: The base transport from which branches will be
 | 
|
4550  | 
            served.
 | 
|
4551  | 
        :param inet: If True, serve over stdin and stdout. Used for running
 | 
|
4552  | 
            from inet.
 | 
|
4553  | 
        :param port: The port to listen on. By default, it's `
 | 
|
4554  | 
            medium.BZR_DEFAULT_PORT`. See `get_host_and_port` for more
 | 
|
4555  | 
            information.
 | 
|
4556  | 
        :return: A smart server.
 | 
|
4557  | 
        """
 | 
|
4558  | 
from bzrlib.smart import medium, server  | 
|
4559  | 
if inet:  | 
|
4560  | 
smart_server = medium.SmartServerPipeStreamMedium(  | 
|
| 
3955.1.6
by Jonathan Lange
 Fix up a couple of dumb errors.  | 
4561  | 
sys.stdin, sys.stdout, transport)  | 
| 
3955.1.4
by Jonathan Lange
 Docstrings and extraction of method to get the smart server.  | 
4562  | 
else:  | 
4563  | 
host, port = self.get_host_and_port(port)  | 
|
| 
3955.1.6
by Jonathan Lange
 Fix up a couple of dumb errors.  | 
4564  | 
smart_server = server.SmartTCPServer(  | 
4565  | 
transport, host=host, port=port)  | 
|
| 
3955.1.4
by Jonathan Lange
 Docstrings and extraction of method to get the smart server.  | 
4566  | 
note('listening on port: %s' % smart_server.port)  | 
| 
3955.1.6
by Jonathan Lange
 Fix up a couple of dumb errors.  | 
4567  | 
return smart_server  | 
| 
3955.1.4
by Jonathan Lange
 Docstrings and extraction of method to get the smart server.  | 
4568  | 
|
| 
2020.1.1
by Robert Collins
 Add readonly support to the smart server, enabled by default via `bzr server`.  | 
4569  | 
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  | 
4570  | 
from bzrlib.transport import get_transport  | 
| 
2018.5.121
by Andrew Bennetts
 Fix cmd_serve.  | 
4571  | 
from bzrlib.transport.chroot import ChrootServer  | 
| 
1910.19.1
by Andrew Bennetts
 Support bzr:// urls to work with the new RPC-based transport which will be used  | 
4572  | 
if directory is None:  | 
4573  | 
directory = os.getcwd()  | 
|
| 
2044.2.1
by Lukáš Lalinský
 Use urlutils.local_path_to_url to get an URL from the directory path.  | 
4574  | 
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`.  | 
4575  | 
if not allow_writes:  | 
4576  | 
url = 'readonly+' + url  | 
|
| 
2018.5.121
by Andrew Bennetts
 Fix cmd_serve.  | 
4577  | 
chroot_server = ChrootServer(get_transport(url))  | 
4578  | 
chroot_server.setUp()  | 
|
4579  | 
t = get_transport(chroot_server.get_url())  | 
|
| 
3955.1.4
by Jonathan Lange
 Docstrings and extraction of method to get the smart server.  | 
4580  | 
smart_server = self.get_smart_server(t, inet, port)  | 
| 
3955.1.3
by Jonathan Lange
 Rename run_server to run_smart_server.  | 
4581  | 
self.run_smart_server(smart_server)  | 
| 
1752.2.12
by Martin Pool
 New 'bzr serve --inet' runs souk server.  | 
4582  | 
|
| 
3955.1.2
by Jonathan Lange
 Extract the port-getting logic. Use note() rather than print()  | 
4583  | 
|
| 
1731.2.7
by Aaron Bentley
 Add join command  | 
4584  | 
class cmd_join(Command):  | 
4585  | 
"""Combine a subtree into its containing tree.  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4586  | 
|
| 
2338.3.1
by Aaron Bentley
 Hide nested-tree commands and improve their docs  | 
4587  | 
    This command is for experimental use only.  It requires the target tree
 | 
4588  | 
    to be in dirstate-with-subtree format, which cannot be converted into
 | 
|
4589  | 
    earlier formats.
 | 
|
4590  | 
||
4591  | 
    The TREE argument should be an independent tree, inside another tree, but
 | 
|
4592  | 
    not part of it.  (Such trees can be produced by "bzr split", but also by
 | 
|
4593  | 
    running "bzr branch" with the target inside a tree.)
 | 
|
4594  | 
||
4595  | 
    The result is a combined tree, with the subtree no longer an independant
 | 
|
4596  | 
    part.  This is marked as a merge of the subtree into the containing tree,
 | 
|
4597  | 
    and all history is preserved.
 | 
|
4598  | 
||
4599  | 
    If --reference is specified, the subtree retains its independence.  It can
 | 
|
4600  | 
    be branched by itself, and can be part of multiple projects at the same
 | 
|
4601  | 
    time.  But operations performed in the containing tree, such as commit
 | 
|
4602  | 
    and merge, will recurse into the subtree.
 | 
|
| 
1731.2.7
by Aaron Bentley
 Add join command  | 
4603  | 
    """
 | 
4604  | 
||
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
4605  | 
_see_also = ['split']  | 
| 
1731.2.7
by Aaron Bentley
 Add join command  | 
4606  | 
takes_args = ['tree']  | 
| 
2598.1.1
by Martin Pool
 Add test for and documentation of option style, fix up existing options to comply  | 
4607  | 
takes_options = [  | 
4608  | 
Option('reference', help='Join by reference.'),  | 
|
4609  | 
            ]
 | 
|
| 
2338.3.1
by Aaron Bentley
 Hide nested-tree commands and improve their docs  | 
4610  | 
hidden = True  | 
| 
1731.2.7
by Aaron Bentley
 Add join command  | 
4611  | 
|
| 
2100.3.11
by Aaron Bentley
 Add join --reference support  | 
4612  | 
def run(self, tree, reference=False):  | 
| 
1731.2.7
by Aaron Bentley
 Add join command  | 
4613  | 
sub_tree = WorkingTree.open(tree)  | 
4614  | 
parent_dir = osutils.dirname(sub_tree.basedir)  | 
|
4615  | 
containing_tree = WorkingTree.open_containing(parent_dir)[0]  | 
|
| 
2255.2.235
by Martin Pool
 Add blackbox test that join gives clean error when the repository doesn't support rich roots  | 
4616  | 
repo = containing_tree.branch.repository  | 
4617  | 
if not repo.supports_rich_root():  | 
|
4618  | 
raise errors.BzrCommandError(  | 
|
4619  | 
"Can't join trees because %s doesn't support rich root data.\n"  | 
|
4620  | 
                "You can use bzr upgrade on the repository."
 | 
|
4621  | 
% (repo,))  | 
|
| 
2100.3.11
by Aaron Bentley
 Add join --reference support  | 
4622  | 
if reference:  | 
| 
2255.2.219
by Martin Pool
 fix unbound local error in cmd_join  | 
4623  | 
try:  | 
| 
2100.3.11
by Aaron Bentley
 Add join --reference support  | 
4624  | 
containing_tree.add_reference(sub_tree)  | 
| 
2255.2.219
by Martin Pool
 fix unbound local error in cmd_join  | 
4625  | 
except errors.BadReferenceTarget, e:  | 
| 
2255.2.235
by Martin Pool
 Add blackbox test that join gives clean error when the repository doesn't support rich roots  | 
4626  | 
                # XXX: Would be better to just raise a nicely printable
 | 
4627  | 
                # exception from the real origin.  Also below.  mbp 20070306
 | 
|
| 
2255.2.219
by Martin Pool
 fix unbound local error in cmd_join  | 
4628  | 
raise errors.BzrCommandError("Cannot join %s. %s" %  | 
| 
2100.3.11
by Aaron Bentley
 Add join --reference support  | 
4629  | 
(tree, e.reason))  | 
4630  | 
else:  | 
|
4631  | 
try:  | 
|
4632  | 
containing_tree.subsume(sub_tree)  | 
|
4633  | 
except errors.BadSubsumeSource, e:  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4634  | 
raise errors.BzrCommandError("Cannot join %s. %s" %  | 
| 
2100.3.11
by Aaron Bentley
 Add join --reference support  | 
4635  | 
(tree, e.reason))  | 
| 
1553.5.35
by Martin Pool
 Start break-lock --show  | 
4636  | 
|
| 
1731.2.22
by Aaron Bentley
 Initial work on split command  | 
4637  | 
|
4638  | 
class cmd_split(Command):  | 
|
| 
3113.6.2
by Aaron Bentley
 Un-hide split command, add NEWS  | 
4639  | 
"""Split a subdirectory of a tree into a separate tree.  | 
| 
2338.3.1
by Aaron Bentley
 Hide nested-tree commands and improve their docs  | 
4640  | 
|
| 
3113.6.2
by Aaron Bentley
 Un-hide split command, add NEWS  | 
4641  | 
    This command will produce a target tree in a format that supports
 | 
4642  | 
    rich roots, like 'rich-root' or 'rich-root-pack'.  These formats cannot be
 | 
|
4643  | 
    converted into earlier formats like 'dirstate-tags'.
 | 
|
| 
2338.3.1
by Aaron Bentley
 Hide nested-tree commands and improve their docs  | 
4644  | 
|
4645  | 
    The TREE argument should be a subdirectory of a working tree.  That
 | 
|
4646  | 
    subdirectory will be converted into an independent tree, with its own
 | 
|
4647  | 
    branch.  Commits in the top-level tree will not apply to the new subtree.
 | 
|
| 
1731.2.22
by Aaron Bentley
 Initial work on split command  | 
4648  | 
    """
 | 
4649  | 
||
| 
3113.6.2
by Aaron Bentley
 Un-hide split command, add NEWS  | 
4650  | 
    # join is not un-hidden yet
 | 
4651  | 
    #_see_also = ['join']
 | 
|
| 
1731.2.22
by Aaron Bentley
 Initial work on split command  | 
4652  | 
takes_args = ['tree']  | 
4653  | 
||
4654  | 
def run(self, tree):  | 
|
4655  | 
containing_tree, subdir = WorkingTree.open_containing(tree)  | 
|
4656  | 
sub_id = containing_tree.path2id(subdir)  | 
|
4657  | 
if sub_id is None:  | 
|
4658  | 
raise errors.NotVersionedError(subdir)  | 
|
| 
1731.2.23
by Aaron Bentley
 Throw user-friendly error splitting in shared repo with wrong format  | 
4659  | 
try:  | 
4660  | 
containing_tree.extract(sub_id)  | 
|
4661  | 
except errors.RootNotRich:  | 
|
4662  | 
raise errors.UpgradeRequired(containing_tree.branch.base)  | 
|
| 
1731.2.22
by Aaron Bentley
 Initial work on split command  | 
4663  | 
|
4664  | 
||
| 
1551.12.8
by Aaron Bentley
 Add merge-directive command  | 
4665  | 
class cmd_merge_directive(Command):  | 
| 
1551.12.32
by Aaron Bentley
 Improve merge directive help  | 
4666  | 
"""Generate a merge directive for auto-merge tools.  | 
4667  | 
||
4668  | 
    A directive requests a merge to be performed, and also provides all the
 | 
|
4669  | 
    information necessary to do so.  This means it must either include a
 | 
|
4670  | 
    revision bundle, or the location of a branch containing the desired
 | 
|
4671  | 
    revision.
 | 
|
4672  | 
||
4673  | 
    A submit branch (the location to merge into) must be supplied the first
 | 
|
4674  | 
    time the command is issued.  After it has been supplied once, it will
 | 
|
4675  | 
    be remembered as the default.
 | 
|
4676  | 
||
4677  | 
    A public branch is optional if a revision bundle is supplied, but required
 | 
|
4678  | 
    if --diff or --plain is specified.  It will be remembered as the default
 | 
|
4679  | 
    after the first use.
 | 
|
4680  | 
    """
 | 
|
| 
1551.12.20
by Aaron Bentley
 Pull directive registry into command class  | 
4681  | 
|
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4682  | 
takes_args = ['submit_branch?', 'public_branch?']  | 
4683  | 
||
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4684  | 
hidden = True  | 
4685  | 
||
| 
2681.1.4
by Aaron Bentley
 Fix reference to told submit command  | 
4686  | 
_see_also = ['send']  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4687  | 
|
| 
1551.12.43
by Aaron Bentley
 Misc changes from review  | 
4688  | 
takes_options = [  | 
4689  | 
RegistryOption.from_kwargs('patch-type',  | 
|
| 
2681.1.7
by Aaron Bentley
 Fix option grammar  | 
4690  | 
'The type of patch to include in the directive.',  | 
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
4691  | 
title='Patch type',  | 
4692  | 
value_switches=True,  | 
|
4693  | 
enum_switch=False,  | 
|
4694  | 
bundle='Bazaar revision bundle (default).',  | 
|
4695  | 
diff='Normal unified diff.',  | 
|
4696  | 
plain='No patch, just directive.'),  | 
|
4697  | 
Option('sign', help='GPG-sign the directive.'), 'revision',  | 
|
| 
1551.12.26
by Aaron Bentley
 Get email working, with optional message  | 
4698  | 
Option('mail-to', type=str,  | 
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
4699  | 
help='Instead of printing the directive, email to this address.'),  | 
| 
1551.12.27
by Aaron Bentley
 support custom message everywhere  | 
4700  | 
Option('message', type=str, short_name='m',  | 
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
4701  | 
help='Message to use when committing this merge.')  | 
| 
1551.12.27
by Aaron Bentley
 support custom message everywhere  | 
4702  | 
        ]
 | 
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4703  | 
|
| 
2530.2.1
by Adeodato Simó
 Add encoding_type = 'exact' to cmd_merge_directive. (LP #120591)  | 
4704  | 
encoding_type = 'exact'  | 
4705  | 
||
| 
1551.12.16
by Aaron Bentley
 Enable signing merge directives  | 
4706  | 
def run(self, submit_branch=None, public_branch=None, patch_type='bundle',  | 
| 
1551.12.27
by Aaron Bentley
 support custom message everywhere  | 
4707  | 
sign=False, revision=None, mail_to=None, message=None):  | 
| 
2490.2.28
by Aaron Bentley
 Fix handling of null revision  | 
4708  | 
from bzrlib.revision import ensure_null, NULL_REVISION  | 
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4709  | 
include_patch, include_bundle = {  | 
4710  | 
'plain': (False, False),  | 
|
4711  | 
'diff': (True, False),  | 
|
4712  | 
'bundle': (True, True),  | 
|
4713  | 
}[patch_type]  | 
|
| 
1551.12.8
by Aaron Bentley
 Add merge-directive command  | 
4714  | 
branch = Branch.open('.')  | 
| 
1551.12.44
by Aaron Bentley
 Add (set|get)_public_branch  | 
4715  | 
stored_submit_branch = branch.get_submit_branch()  | 
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4716  | 
if submit_branch is None:  | 
| 
1551.12.44
by Aaron Bentley
 Add (set|get)_public_branch  | 
4717  | 
submit_branch = stored_submit_branch  | 
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4718  | 
else:  | 
| 
1551.12.44
by Aaron Bentley
 Add (set|get)_public_branch  | 
4719  | 
if stored_submit_branch is None:  | 
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4720  | 
branch.set_submit_branch(submit_branch)  | 
4721  | 
if submit_branch is None:  | 
|
4722  | 
submit_branch = branch.get_parent()  | 
|
4723  | 
if submit_branch is None:  | 
|
4724  | 
raise errors.BzrCommandError('No submit branch specified or known')  | 
|
| 
1551.12.44
by Aaron Bentley
 Add (set|get)_public_branch  | 
4725  | 
|
4726  | 
stored_public_branch = branch.get_public_branch()  | 
|
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4727  | 
if public_branch is None:  | 
| 
1551.12.44
by Aaron Bentley
 Add (set|get)_public_branch  | 
4728  | 
public_branch = stored_public_branch  | 
4729  | 
elif stored_public_branch is None:  | 
|
4730  | 
branch.set_public_branch(public_branch)  | 
|
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4731  | 
if not include_bundle and public_branch is None:  | 
| 
1551.12.24
by Aaron Bentley
 Add RegistryOption.from_swargs to simplify simple registry options  | 
4732  | 
raise errors.BzrCommandError('No public branch specified or'  | 
4733  | 
' known')  | 
|
| 
2520.4.112
by Aaron Bentley
 Make cherry-pick merge directives possible  | 
4734  | 
base_revision_id = None  | 
| 
1551.12.17
by Aaron Bentley
 add revision selection to mergedirective  | 
4735  | 
if revision is not None:  | 
| 
2520.4.112
by Aaron Bentley
 Make cherry-pick merge directives possible  | 
4736  | 
if len(revision) > 2:  | 
| 
1551.12.17
by Aaron Bentley
 add revision selection to mergedirective  | 
4737  | 
raise errors.BzrCommandError('bzr merge-directive takes '  | 
| 
2520.4.112
by Aaron Bentley
 Make cherry-pick merge directives possible  | 
4738  | 
'at most two one revision identifiers')  | 
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
4739  | 
revision_id = revision[-1].as_revision_id(branch)  | 
| 
2520.4.112
by Aaron Bentley
 Make cherry-pick merge directives possible  | 
4740  | 
if len(revision) == 2:  | 
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
4741  | 
base_revision_id = revision[0].as_revision_id(branch)  | 
| 
1551.12.17
by Aaron Bentley
 add revision selection to mergedirective  | 
4742  | 
else:  | 
4743  | 
revision_id = branch.last_revision()  | 
|
| 
2490.2.28
by Aaron Bentley
 Fix handling of null revision  | 
4744  | 
revision_id = ensure_null(revision_id)  | 
4745  | 
if revision_id == NULL_REVISION:  | 
|
4746  | 
raise errors.BzrCommandError('No revisions to bundle.')  | 
|
| 
2520.4.73
by Aaron Bentley
 Implement new merge directive format  | 
4747  | 
directive = merge_directive.MergeDirective2.from_objects(  | 
| 
1551.12.17
by Aaron Bentley
 add revision selection to mergedirective  | 
4748  | 
branch.repository, revision_id, time.time(),  | 
| 
1551.12.8
by Aaron Bentley
 Add merge-directive command  | 
4749  | 
osutils.local_time_offset(), submit_branch,  | 
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4750  | 
public_branch=public_branch, include_patch=include_patch,  | 
4751  | 
include_bundle=include_bundle, message=message,  | 
|
4752  | 
base_revision_id=base_revision_id)  | 
|
| 
1551.12.26
by Aaron Bentley
 Get email working, with optional message  | 
4753  | 
if mail_to is None:  | 
4754  | 
if sign:  | 
|
4755  | 
self.outf.write(directive.to_signed(branch))  | 
|
4756  | 
else:  | 
|
4757  | 
self.outf.writelines(directive.to_lines())  | 
|
| 
1551.12.16
by Aaron Bentley
 Enable signing merge directives  | 
4758  | 
else:  | 
| 
1551.12.26
by Aaron Bentley
 Get email working, with optional message  | 
4759  | 
message = directive.to_email(mail_to, branch, sign)  | 
| 
2535.2.1
by Adeodato Simó
 New SMTPConnection class, a reduced version of that in bzr-email.  | 
4760  | 
s = SMTPConnection(branch.get_config())  | 
4761  | 
s.send_email(message)  | 
|
| 
1551.12.8
by Aaron Bentley
 Add merge-directive command  | 
4762  | 
|
| 
1551.12.14
by Aaron Bentley
 Get merge-directive command basically working  | 
4763  | 
|
| 
2654.3.1
by Aaron Bentley
 Rename submit to send, make -o required, support -o- for stdout  | 
4764  | 
class cmd_send(Command):  | 
| 
3825.6.6
by Karl Fogel
 * bzr/bzr.dev/bzrlib/builtins.py  | 
4765  | 
"""Mail or create a merge-directive for submitting changes.  | 
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4766  | 
|
4767  | 
    A merge directive provides many things needed for requesting merges:
 | 
|
| 
2666.1.1
by Ian Clatworthy
 Bazaar User Reference generated from online help  | 
4768  | 
|
4769  | 
    * A machine-readable description of the merge to perform
 | 
|
4770  | 
||
4771  | 
    * An optional patch that is a preview of the changes requested
 | 
|
4772  | 
||
4773  | 
    * An optional bundle of revision data, so that the changes can be applied
 | 
|
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4774  | 
      directly from the merge directive, without retrieving data from a
 | 
4775  | 
      branch.
 | 
|
4776  | 
||
4777  | 
    If --no-bundle is specified, then public_branch is needed (and must be
 | 
|
4778  | 
    up-to-date), so that the receiver can perform the merge using the
 | 
|
4779  | 
    public_branch.  The public_branch is always included if known, so that
 | 
|
4780  | 
    people can check it later.
 | 
|
4781  | 
||
4782  | 
    The submit branch defaults to the parent, but can be overridden.  Both
 | 
|
4783  | 
    submit branch and public branch will be remembered if supplied.
 | 
|
4784  | 
||
4785  | 
    If a public_branch is known for the submit_branch, that public submit
 | 
|
4786  | 
    branch is used in the merge instructions.  This means that a local mirror
 | 
|
| 
2520.4.122
by Aaron Bentley
 Clarify doc  | 
4787  | 
    can be used as your actual submit branch, once you have set public_branch
 | 
4788  | 
    for that mirror.
 | 
|
| 
2681.1.6
by Aaron Bentley
 Update help to describe available formats  | 
4789  | 
|
| 
2681.1.30
by Aaron Bentley
 Update NEWS and docs  | 
4790  | 
    Mail is sent using your preferred mail program.  This should be transparent
 | 
| 
3065.3.2
by Alexander Belchenko
 fix ReST formatting in cmd_send help  | 
4791  | 
    on Windows (it uses MAPI).  On Linux, it requires the xdg-email utility.
 | 
4792  | 
    If the preferred client can't be found (or used), your editor will be used.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4793  | 
|
| 
2681.1.30
by Aaron Bentley
 Update NEWS and docs  | 
4794  | 
    To use a specific mail program, set the mail_client configuration option.
 | 
| 
2790.2.2
by Keir Mierle
 Change alphabetic ordering into two categories; one for specific clients the other for generic options.  | 
4795  | 
    (For Thunderbird 1.5, this works around some bugs.)  Supported values for
 | 
| 
3921.2.8
by Aaron Bentley
 Update docs  | 
4796  | 
    specific clients are "claws", "evolution", "kmail", "mutt", and
 | 
4797  | 
    "thunderbird"; generic options are "default", "editor", "emacsclient",
 | 
|
4798  | 
    "mapi", and "xdg-email".  Plugins may also add supported clients.
 | 
|
| 
2681.1.13
by Aaron Bentley
 Add support for submit_to config option  | 
4799  | 
|
4800  | 
    If mail is being sent, a to address is required.  This can be supplied
 | 
|
| 
3251.1.2
by Jelmer Vernooij
 ``bzr send`` now supports new ``child_submit_to`` option in the submit branch  | 
4801  | 
    either on the commandline, by setting the submit_to configuration
 | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4802  | 
    option in the branch itself or the child_submit_to configuration option
 | 
| 
3251.1.2
by Jelmer Vernooij
 ``bzr send`` now supports new ``child_submit_to`` option in the submit branch  | 
4803  | 
    in the submit branch.
 | 
| 
2681.1.13
by Aaron Bentley
 Add support for submit_to config option  | 
4804  | 
|
| 
2681.1.6
by Aaron Bentley
 Update help to describe available formats  | 
4805  | 
    Two formats are currently supported: "4" uses revision bundle format 4 and
 | 
4806  | 
    merge directive format 2.  It is significantly faster and smaller than
 | 
|
4807  | 
    older formats.  It is compatible with Bazaar 0.19 and later.  It is the
 | 
|
4808  | 
    default.  "0.9" uses revision bundle format 0.9 and merge directive
 | 
|
4809  | 
    format 1.  It is compatible with Bazaar 0.12 - 0.18.
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
4810  | 
|
| 
4095.2.1
by Neil Martinsen-Burrell
 Better help for bzr send  | 
4811  | 
    The merge directives created by bzr send may be applied using bzr merge or
 | 
4812  | 
    bzr pull by specifying a file containing a merge directive as the location.
 | 
|
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4813  | 
    """
 | 
4814  | 
||
4815  | 
encoding_type = 'exact'  | 
|
4816  | 
||
| 
3313.1.1
by Ian Clatworthy
 Improve doc on send/merge relationship (Peter Schuller)  | 
4817  | 
_see_also = ['merge', 'pull']  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4818  | 
|
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4819  | 
takes_args = ['submit_branch?', 'public_branch?']  | 
| 
2654.3.1
by Aaron Bentley
 Rename submit to send, make -o required, support -o- for stdout  | 
4820  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4821  | 
takes_options = [  | 
4822  | 
Option('no-bundle',  | 
|
| 
2520.4.132
by Aaron Bentley
 Merge from bzr.dev  | 
4823  | 
help='Do not include a bundle in the merge directive.'),  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4824  | 
Option('no-patch', help='Do not include a preview patch in the merge'  | 
| 
2520.4.132
by Aaron Bentley
 Merge from bzr.dev  | 
4825  | 
' directive.'),  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4826  | 
Option('remember',  | 
| 
2520.4.132
by Aaron Bentley
 Merge from bzr.dev  | 
4827  | 
help='Remember submit and public branch.'),  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4828  | 
Option('from',  | 
| 
2520.4.132
by Aaron Bentley
 Merge from bzr.dev  | 
4829  | 
help='Branch to generate the submission from, '  | 
4830  | 
'rather than the one containing the working directory.',  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4831  | 
short_name='f',  | 
4832  | 
type=unicode),  | 
|
| 
3377.2.1
by Martin Pool
 doc: send -o, and more on send in user guide  | 
4833  | 
Option('output', short_name='o',  | 
| 
3377.2.2
by Martin Pool
 Say 'merge directive' rather than just 'directive' in help  | 
4834  | 
help='Write merge directive to this file; '  | 
| 
3377.2.1
by Martin Pool
 doc: send -o, and more on send in user guide  | 
4835  | 
'use - for stdout.',  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4836  | 
type=unicode),  | 
| 
2681.1.32
by Aaron Bentley
 Fix option grammar  | 
4837  | 
Option('mail-to', help='Mail the request to this address.',  | 
| 
2681.1.9
by Aaron Bentley
 Add support for mail-from-editor  | 
4838  | 
type=unicode),  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4839  | 
'revision',  | 
| 
2681.1.9
by Aaron Bentley
 Add support for mail-from-editor  | 
4840  | 
'message',  | 
| 
4098.5.2
by Aaron Bentley
 Push body support through bzr send.  | 
4841  | 
Option('body', help='Body for the email.', type=unicode),  | 
| 
2681.1.7
by Aaron Bentley
 Fix option grammar  | 
4842  | 
RegistryOption.from_kwargs('format',  | 
4843  | 
'Use the specified output format.',  | 
|
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
4844  | 
**{'4': 'Bundle format 4, Merge Directive 2 (default)',  | 
| 
2681.1.5
by Aaron Bentley
 Display correct help message in from_kwargs  | 
4845  | 
'0.9': 'Bundle format 0.9, Merge Directive 1',})  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4846  | 
        ]
 | 
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4847  | 
|
4848  | 
def run(self, submit_branch=None, public_branch=None, no_bundle=False,  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4849  | 
no_patch=False, revision=None, remember=False, output=None,  | 
| 
4098.5.2
by Aaron Bentley
 Push body support through bzr send.  | 
4850  | 
format='4', mail_to=None, message=None, body=None, **kwargs):  | 
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
4851  | 
return self._run(submit_branch, revision, public_branch, remember,  | 
4852  | 
format, no_bundle, no_patch, output,  | 
|
| 
4098.5.2
by Aaron Bentley
 Push body support through bzr send.  | 
4853  | 
kwargs.get('from', '.'), mail_to, message, body)  | 
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
4854  | 
|
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
4855  | 
def _run(self, submit_branch, revision, public_branch, remember, format,  | 
| 
4098.5.2
by Aaron Bentley
 Push body support through bzr send.  | 
4856  | 
no_bundle, no_patch, output, from_, mail_to, message, body):  | 
| 
2872.2.1
by Andrew Bennetts
 Remove unused imports in builtins.py revealed by pyflakes, and fix one undefined name.  | 
4857  | 
from bzrlib.revision import NULL_REVISION  | 
| 
3060.2.1
by Lukáš Lalinský
 Fix misplaced branch lock in cmd_send.  | 
4858  | 
branch = Branch.open_containing(from_)[0]  | 
| 
2681.1.8
by Aaron Bentley
 Add Thunderbird support to bzr send  | 
4859  | 
if output is None:  | 
| 
3224.5.1
by Andrew Bennetts
 Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.  | 
4860  | 
outfile = cStringIO.StringIO()  | 
| 
2681.1.8
by Aaron Bentley
 Add Thunderbird support to bzr send  | 
4861  | 
elif output == '-':  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4862  | 
outfile = self.outf  | 
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4863  | 
else:  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4864  | 
outfile = open(output, 'wb')  | 
| 
3060.2.1
by Lukáš Lalinský
 Fix misplaced branch lock in cmd_send.  | 
4865  | 
        # we may need to write data into branch's repository to calculate
 | 
4866  | 
        # the data to send.
 | 
|
4867  | 
branch.lock_write()  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4868  | 
try:  | 
| 
2681.1.10
by Aaron Bentley
 Clean up handling of unknown mail clients  | 
4869  | 
if output is None:  | 
| 
2681.1.13
by Aaron Bentley
 Add support for submit_to config option  | 
4870  | 
config = branch.get_config()  | 
4871  | 
if mail_to is None:  | 
|
4872  | 
mail_to = config.get_user_option('submit_to')  | 
|
4873  | 
mail_client = config.get_mail_client()  | 
|
| 
4098.5.4
by Aaron Bentley
 Cleaner support for mail clients lacking body support.  | 
4874  | 
if (not getattr(mail_client, 'supports_body', False)  | 
4875  | 
and body is not None):  | 
|
4876  | 
raise errors.BzrCommandError(  | 
|
4877  | 
'Mail client "%s" does not support specifying body' %  | 
|
4878  | 
mail_client.__class__.__name__)  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4879  | 
if remember and submit_branch is None:  | 
4880  | 
raise errors.BzrCommandError(  | 
|
4881  | 
'--remember requires a branch to be specified.')  | 
|
4882  | 
stored_submit_branch = branch.get_submit_branch()  | 
|
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
4883  | 
remembered_submit_branch = None  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4884  | 
if submit_branch is None:  | 
4885  | 
submit_branch = stored_submit_branch  | 
|
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
4886  | 
remembered_submit_branch = "submit"  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4887  | 
else:  | 
4888  | 
if stored_submit_branch is None or remember:  | 
|
4889  | 
branch.set_submit_branch(submit_branch)  | 
|
4890  | 
if submit_branch is None:  | 
|
4891  | 
submit_branch = branch.get_parent()  | 
|
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
4892  | 
remembered_submit_branch = "parent"  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4893  | 
if submit_branch is None:  | 
4894  | 
raise errors.BzrCommandError('No submit branch known or'  | 
|
4895  | 
' specified')  | 
|
| 
3596.3.1
by James Westby
 Give the user a bit more information about which saved location is being used.  | 
4896  | 
if remembered_submit_branch is not None:  | 
4897  | 
note('Using saved %s location "%s" to determine what '  | 
|
4898  | 
'changes to submit.', remembered_submit_branch,  | 
|
4899  | 
submit_branch)  | 
|
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4900  | 
|
| 
3251.1.2
by Jelmer Vernooij
 ``bzr send`` now supports new ``child_submit_to`` option in the submit branch  | 
4901  | 
if mail_to is None:  | 
| 
3251.1.3
by Jelmer Vernooij
 Fix formatting.  | 
4902  | 
submit_config = Branch.open(submit_branch).get_config()  | 
4903  | 
mail_to = submit_config.get_user_option("child_submit_to")  | 
|
| 
3251.1.2
by Jelmer Vernooij
 ``bzr send`` now supports new ``child_submit_to`` option in the submit branch  | 
4904  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4905  | 
stored_public_branch = branch.get_public_branch()  | 
4906  | 
if public_branch is None:  | 
|
4907  | 
public_branch = stored_public_branch  | 
|
4908  | 
elif stored_public_branch is None or remember:  | 
|
4909  | 
branch.set_public_branch(public_branch)  | 
|
4910  | 
if no_bundle and public_branch is None:  | 
|
4911  | 
raise errors.BzrCommandError('No public branch specified or'  | 
|
4912  | 
' known')  | 
|
4913  | 
base_revision_id = None  | 
|
| 
2747.3.1
by Aaron Bentley
 'send' and 'bundle' now handle partial ranges correctly (#61685)  | 
4914  | 
revision_id = None  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4915  | 
if revision is not None:  | 
4916  | 
if len(revision) > 2:  | 
|
| 
2654.3.1
by Aaron Bentley
 Rename submit to send, make -o required, support -o- for stdout  | 
4917  | 
raise errors.BzrCommandError('bzr send takes '  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4918  | 
'at most two one revision identifiers')  | 
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
4919  | 
revision_id = revision[-1].as_revision_id(branch)  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4920  | 
if len(revision) == 2:  | 
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
4921  | 
base_revision_id = revision[0].as_revision_id(branch)  | 
| 
2747.3.1
by Aaron Bentley
 'send' and 'bundle' now handle partial ranges correctly (#61685)  | 
4922  | 
if revision_id is None:  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4923  | 
revision_id = branch.last_revision()  | 
4924  | 
if revision_id == NULL_REVISION:  | 
|
4925  | 
raise errors.BzrCommandError('No revisions to submit.')  | 
|
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
4926  | 
if format == '4':  | 
4927  | 
directive = merge_directive.MergeDirective2.from_objects(  | 
|
4928  | 
branch.repository, revision_id, time.time(),  | 
|
4929  | 
osutils.local_time_offset(), submit_branch,  | 
|
4930  | 
public_branch=public_branch, include_patch=not no_patch,  | 
|
| 
2681.1.9
by Aaron Bentley
 Add support for mail-from-editor  | 
4931  | 
include_bundle=not no_bundle, message=message,  | 
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
4932  | 
base_revision_id=base_revision_id)  | 
4933  | 
elif format == '0.9':  | 
|
4934  | 
if not no_bundle:  | 
|
4935  | 
if not no_patch:  | 
|
4936  | 
patch_type = 'bundle'  | 
|
4937  | 
else:  | 
|
4938  | 
raise errors.BzrCommandError('Format 0.9 does not'  | 
|
4939  | 
' permit bundle with no patch')  | 
|
4940  | 
else:  | 
|
4941  | 
if not no_patch:  | 
|
4942  | 
patch_type = 'diff'  | 
|
4943  | 
else:  | 
|
4944  | 
patch_type = None  | 
|
4945  | 
directive = merge_directive.MergeDirective.from_objects(  | 
|
4946  | 
branch.repository, revision_id, time.time(),  | 
|
4947  | 
osutils.local_time_offset(), submit_branch,  | 
|
4948  | 
public_branch=public_branch, patch_type=patch_type,  | 
|
| 
2681.1.9
by Aaron Bentley
 Add support for mail-from-editor  | 
4949  | 
message=message)  | 
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
4950  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4951  | 
outfile.writelines(directive.to_lines())  | 
| 
2681.1.8
by Aaron Bentley
 Add Thunderbird support to bzr send  | 
4952  | 
if output is None:  | 
| 
2681.1.9
by Aaron Bentley
 Add support for mail-from-editor  | 
4953  | 
subject = '[MERGE] '  | 
4954  | 
if message is not None:  | 
|
4955  | 
subject += message  | 
|
4956  | 
else:  | 
|
4957  | 
revision = branch.repository.get_revision(revision_id)  | 
|
| 
2681.3.5
by Lukáš Lalinsky
 Don't send e-mails with multi-line subjects.  | 
4958  | 
subject += revision.get_summary()  | 
| 
3251.2.1
by Aaron Bentley
 Use nick/revno-based names for merge directives  | 
4959  | 
basename = directive.get_disk_name(branch)  | 
| 
2681.1.11
by Aaron Bentley
 Add docstrings, add compose_merge_request  | 
4960  | 
mail_client.compose_merge_request(mail_to, subject,  | 
| 
4098.5.2
by Aaron Bentley
 Push body support through bzr send.  | 
4961  | 
outfile.getvalue(),  | 
4962  | 
basename, body)  | 
|
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4963  | 
finally:  | 
| 
2654.3.1
by Aaron Bentley
 Rename submit to send, make -o required, support -o- for stdout  | 
4964  | 
if output != '-':  | 
| 
2520.4.121
by Aaron Bentley
 Polish up submit command  | 
4965  | 
outfile.close()  | 
| 
3010.1.17
by Robert Collins
 Lock correctness and commit_group management for re-sign, in builtins.  | 
4966  | 
branch.unlock()  | 
| 
2520.5.4
by Aaron Bentley
 Replace 'bundle-revisions' with 'submit' command  | 
4967  | 
|
| 
2654.3.1
by Aaron Bentley
 Rename submit to send, make -o required, support -o- for stdout  | 
4968  | 
|
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
4969  | 
class cmd_bundle_revisions(cmd_send):  | 
4970  | 
||
| 
3825.6.6
by Karl Fogel
 * bzr/bzr.dev/bzrlib/builtins.py  | 
4971  | 
"""Create a merge-directive for submitting changes.  | 
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
4972  | 
|
4973  | 
    A merge directive provides many things needed for requesting merges:
 | 
|
4974  | 
||
4975  | 
    * A machine-readable description of the merge to perform
 | 
|
4976  | 
||
4977  | 
    * An optional patch that is a preview of the changes requested
 | 
|
4978  | 
||
4979  | 
    * An optional bundle of revision data, so that the changes can be applied
 | 
|
4980  | 
      directly from the merge directive, without retrieving data from a
 | 
|
4981  | 
      branch.
 | 
|
4982  | 
||
4983  | 
    If --no-bundle is specified, then public_branch is needed (and must be
 | 
|
4984  | 
    up-to-date), so that the receiver can perform the merge using the
 | 
|
4985  | 
    public_branch.  The public_branch is always included if known, so that
 | 
|
4986  | 
    people can check it later.
 | 
|
4987  | 
||
4988  | 
    The submit branch defaults to the parent, but can be overridden.  Both
 | 
|
4989  | 
    submit branch and public branch will be remembered if supplied.
 | 
|
4990  | 
||
4991  | 
    If a public_branch is known for the submit_branch, that public submit
 | 
|
4992  | 
    branch is used in the merge instructions.  This means that a local mirror
 | 
|
4993  | 
    can be used as your actual submit branch, once you have set public_branch
 | 
|
4994  | 
    for that mirror.
 | 
|
| 
2681.1.6
by Aaron Bentley
 Update help to describe available formats  | 
4995  | 
|
4996  | 
    Two formats are currently supported: "4" uses revision bundle format 4 and
 | 
|
4997  | 
    merge directive format 2.  It is significantly faster and smaller than
 | 
|
4998  | 
    older formats.  It is compatible with Bazaar 0.19 and later.  It is the
 | 
|
4999  | 
    default.  "0.9" uses revision bundle format 0.9 and merge directive
 | 
|
5000  | 
    format 1.  It is compatible with Bazaar 0.12 - 0.18.
 | 
|
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
5001  | 
    """
 | 
5002  | 
||
| 
2681.1.9
by Aaron Bentley
 Add support for mail-from-editor  | 
5003  | 
takes_options = [  | 
5004  | 
Option('no-bundle',  | 
|
5005  | 
help='Do not include a bundle in the merge directive.'),  | 
|
5006  | 
Option('no-patch', help='Do not include a preview patch in the merge'  | 
|
5007  | 
' directive.'),  | 
|
5008  | 
Option('remember',  | 
|
5009  | 
help='Remember submit and public branch.'),  | 
|
5010  | 
Option('from',  | 
|
5011  | 
help='Branch to generate the submission from, '  | 
|
5012  | 
'rather than the one containing the working directory.',  | 
|
5013  | 
short_name='f',  | 
|
5014  | 
type=unicode),  | 
|
5015  | 
Option('output', short_name='o', help='Write directive to this file.',  | 
|
5016  | 
type=unicode),  | 
|
5017  | 
'revision',  | 
|
5018  | 
RegistryOption.from_kwargs('format',  | 
|
5019  | 
'Use the specified output format.',  | 
|
5020  | 
**{'4': 'Bundle format 4, Merge Directive 2 (default)',  | 
|
5021  | 
'0.9': 'Bundle format 0.9, Merge Directive 1',})  | 
|
5022  | 
        ]
 | 
|
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
5023  | 
aliases = ['bundle']  | 
5024  | 
||
5025  | 
_see_also = ['send', 'merge']  | 
|
5026  | 
||
5027  | 
hidden = True  | 
|
5028  | 
||
5029  | 
def run(self, submit_branch=None, public_branch=None, no_bundle=False,  | 
|
5030  | 
no_patch=False, revision=None, remember=False, output=None,  | 
|
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
5031  | 
format='4', **kwargs):  | 
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
5032  | 
if output is None:  | 
5033  | 
output = '-'  | 
|
| 
2681.1.2
by Aaron Bentley
 Add support for selecting bundle format  | 
5034  | 
return self._run(submit_branch, revision, public_branch, remember,  | 
5035  | 
format, no_bundle, no_patch, output,  | 
|
| 
4098.5.7
by Aaron Bentley
 Fix bundle-revisions after adjusting cmd_send._run  | 
5036  | 
kwargs.get('from', '.'), None, None, None)  | 
| 
2681.1.1
by Aaron Bentley
 Split 'send' into 'send' and 'bundle'.  | 
5037  | 
|
5038  | 
||
| 
2220.2.2
by Martin Pool
 Add tag command and basic implementation  | 
5039  | 
class cmd_tag(Command):  | 
| 
2664.1.1
by Joachim Nilsson
 Change tag description for "help commands" to make it easier to find  | 
5040  | 
"""Create, remove or modify a tag naming a revision.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
5041  | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
5042  | 
    Tags give human-meaningful names to revisions.  Commands that take a -r
 | 
5043  | 
    (--revision) option can be given -rtag:X, where X is any previously
 | 
|
5044  | 
    created tag.
 | 
|
5045  | 
||
| 
2220.2.41
by Martin Pool
 Fix tag help (fullermd)  | 
5046  | 
    Tags are stored in the branch.  Tags are copied from one branch to another
 | 
5047  | 
    along when you branch, push, pull or merge.
 | 
|
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5048  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
5049  | 
    It is an error to give a tag name that already exists unless you pass
 | 
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5050  | 
    --force, in which case the tag is moved to point to the new revision.
 | 
| 
3566.2.1
by Benjamin Peterson
 document how the rename tags  | 
5051  | 
|
| 
3566.2.2
by Benjamin Peterson
 fix markup  | 
5052  | 
    To rename a tag (change the name but keep it on the same revsion), run ``bzr
 | 
5053  | 
    tag new-name -r tag:old-name`` and then ``bzr tag --delete oldname``.
 | 
|
| 
2220.2.8
by Martin Pool
 Add -d option to push, pull, merge commands.  | 
5054  | 
    """
 | 
| 
2220.2.2
by Martin Pool
 Add tag command and basic implementation  | 
5055  | 
|
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
5056  | 
_see_also = ['commit', 'tags']  | 
| 
2220.2.2
by Martin Pool
 Add tag command and basic implementation  | 
5057  | 
takes_args = ['tag_name']  | 
5058  | 
takes_options = [  | 
|
| 
2220.2.21
by Martin Pool
 Add tag --delete command and implementation  | 
5059  | 
Option('delete',  | 
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5060  | 
help='Delete this tag rather than placing it.',  | 
5061  | 
            ),
 | 
|
5062  | 
Option('directory',  | 
|
5063  | 
help='Branch in which to place the tag.',  | 
|
5064  | 
short_name='d',  | 
|
5065  | 
type=unicode,  | 
|
5066  | 
            ),
 | 
|
5067  | 
Option('force',  | 
|
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
5068  | 
help='Replace existing tags.',  | 
| 
2220.2.21
by Martin Pool
 Add tag --delete command and implementation  | 
5069  | 
            ),
 | 
| 
2220.2.6
by Martin Pool
 Add tag -r option  | 
5070  | 
'revision',  | 
| 
2220.2.2
by Martin Pool
 Add tag command and basic implementation  | 
5071  | 
        ]
 | 
5072  | 
||
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5073  | 
def run(self, tag_name,  | 
5074  | 
delete=None,  | 
|
5075  | 
directory='.',  | 
|
5076  | 
force=None,  | 
|
| 
2220.2.21
by Martin Pool
 Add tag --delete command and implementation  | 
5077  | 
revision=None,  | 
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5078  | 
            ):
 | 
| 
2220.2.2
by Martin Pool
 Add tag command and basic implementation  | 
5079  | 
branch, relpath = Branch.open_containing(directory)  | 
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5080  | 
branch.lock_write()  | 
5081  | 
try:  | 
|
5082  | 
if delete:  | 
|
5083  | 
branch.tags.delete_tag(tag_name)  | 
|
5084  | 
self.outf.write('Deleted tag %s.\n' % tag_name)  | 
|
| 
2220.2.21
by Martin Pool
 Add tag --delete command and implementation  | 
5085  | 
else:  | 
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5086  | 
if revision:  | 
5087  | 
if len(revision) != 1:  | 
|
5088  | 
raise errors.BzrCommandError(  | 
|
5089  | 
                            "Tags can only be placed on a single revision, "
 | 
|
5090  | 
"not on a range")  | 
|
| 
3298.2.8
by John Arbash Meinel
 Get rid of .in_branch(need_revno=False) in favor of simpler .as_revision_id()  | 
5091  | 
revision_id = revision[0].as_revision_id(branch)  | 
| 
2220.2.42
by Martin Pool
 Tag command refuses to replace existing tags unless you force it.  | 
5092  | 
else:  | 
5093  | 
revision_id = branch.last_revision()  | 
|
5094  | 
if (not force) and branch.tags.has_tag(tag_name):  | 
|
5095  | 
raise errors.TagAlreadyExists(tag_name)  | 
|
5096  | 
branch.tags.set_tag(tag_name, revision_id)  | 
|
5097  | 
self.outf.write('Created tag %s.\n' % tag_name)  | 
|
5098  | 
finally:  | 
|
5099  | 
branch.unlock()  | 
|
| 
2220.2.2
by Martin Pool
 Add tag command and basic implementation  | 
5100  | 
|
5101  | 
||
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5102  | 
class cmd_tags(Command):  | 
5103  | 
"""List tags.  | 
|
5104  | 
||
| 
3007.1.1
by Adeodato Simó
 Small fix to tags' help.  | 
5105  | 
    This command shows a table of tag names and the revisions they reference.
 | 
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5106  | 
    """
 | 
5107  | 
||
| 
2425.2.3
by Robert Collins
 Update existing builtin commands help text to use _see_also. (Robert Collins)  | 
5108  | 
_see_also = ['tag']  | 
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5109  | 
takes_options = [  | 
5110  | 
Option('directory',  | 
|
| 
2598.1.2
by Martin Pool
 Also check that option help ends in a period, and fix those that don't  | 
5111  | 
help='Branch whose tags should be displayed.',  | 
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5112  | 
short_name='d',  | 
5113  | 
type=unicode,  | 
|
5114  | 
            ),
 | 
|
| 
2805.8.6
by Adeodato Simó
 Don't sort by revno; only by time if --sort=time is passed.  | 
5115  | 
RegistryOption.from_kwargs('sort',  | 
5116  | 
'Sort tags by different criteria.', title='Sorting',  | 
|
5117  | 
alpha='Sort tags lexicographically (default).',  | 
|
5118  | 
time='Sort tags chronologically.',  | 
|
5119  | 
            ),
 | 
|
| 
2805.8.3
by Adeodato Simó
 Show dotted revnos, and revids only with --show-ids.  | 
5120  | 
'show-ids',  | 
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
5121  | 
'revision',  | 
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5122  | 
    ]
 | 
5123  | 
||
5124  | 
    @display_command
 | 
|
5125  | 
def run(self,  | 
|
5126  | 
directory='.',  | 
|
| 
2805.8.6
by Adeodato Simó
 Don't sort by revno; only by time if --sort=time is passed.  | 
5127  | 
sort='alpha',  | 
| 
2805.8.3
by Adeodato Simó
 Show dotted revnos, and revids only with --show-ids.  | 
5128  | 
show_ids=False,  | 
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
5129  | 
revision=None,  | 
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5130  | 
            ):
 | 
5131  | 
branch, relpath = Branch.open_containing(directory)  | 
|
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
5132  | 
|
| 
2805.8.6
by Adeodato Simó
 Don't sort by revno; only by time if --sort=time is passed.  | 
5133  | 
tags = branch.tags.get_tag_dict().items()  | 
| 
3553.1.1
by Robert Collins
 Do not scan history for tags when none are present.  | 
5134  | 
if not tags:  | 
5135  | 
            return
 | 
|
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
5136  | 
|
5137  | 
if revision:  | 
|
5138  | 
branch.lock_read()  | 
|
5139  | 
try:  | 
|
5140  | 
graph = branch.repository.get_graph()  | 
|
| 
3904.2.4
by Marius Kruger
 * rename _get2Revisions to _get_revision_range  | 
5141  | 
rev1, rev2 = _get_revision_range(revision, branch, self.name())  | 
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
5142  | 
revid1, revid2 = rev1.rev_id, rev2.rev_id  | 
5143  | 
                # only show revisions between revid1 and revid2 (inclusive)
 | 
|
5144  | 
tags = [(tag, revid) for tag, revid in tags if  | 
|
| 
3921.3.5
by Marius Kruger
 extract graph.is_between from builtins.cmd_tags.run, and test it  | 
5145  | 
graph.is_between(revid, revid1, revid2)]  | 
| 
3904.2.1
by Marius Kruger
 * factor out _get2Revisions from cmd_log to be able to reuse how revesions is determined by log.  | 
5146  | 
finally:  | 
5147  | 
branch.unlock()  | 
|
| 
2805.8.6
by Adeodato Simó
 Don't sort by revno; only by time if --sort=time is passed.  | 
5148  | 
if sort == 'alpha':  | 
5149  | 
tags.sort()  | 
|
5150  | 
elif sort == 'time':  | 
|
5151  | 
timestamps = {}  | 
|
5152  | 
for tag, revid in tags:  | 
|
5153  | 
try:  | 
|
5154  | 
revobj = branch.repository.get_revision(revid)  | 
|
5155  | 
except errors.NoSuchRevision:  | 
|
5156  | 
timestamp = sys.maxint # place them at the end  | 
|
5157  | 
else:  | 
|
5158  | 
timestamp = revobj.timestamp  | 
|
5159  | 
timestamps[revid] = timestamp  | 
|
5160  | 
tags.sort(key=lambda x: timestamps[x[1]])  | 
|
5161  | 
if not show_ids:  | 
|
5162  | 
            # [ (tag, revid), ... ] -> [ (tag, dotted_revno), ... ]
 | 
|
5163  | 
revno_map = branch.get_revision_id_to_revno_map()  | 
|
5164  | 
tags = [ (tag, '.'.join(map(str, revno_map.get(revid, ('?',)))))  | 
|
5165  | 
for tag, revid in tags ]  | 
|
5166  | 
for tag, revspec in tags:  | 
|
5167  | 
self.outf.write('%-20s %s\n' % (tag, revspec))  | 
|
| 
2220.2.24
by Martin Pool
 Add tags command  | 
5168  | 
|
5169  | 
||
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
5170  | 
class cmd_reconfigure(Command):  | 
| 
2796.2.15
by Aaron Bentley
 More updates from review  | 
5171  | 
"""Reconfigure the type of a bzr directory.  | 
5172  | 
||
5173  | 
    A target configuration must be specified.
 | 
|
5174  | 
||
5175  | 
    For checkouts, the bind-to location will be auto-detected if not specified.
 | 
|
5176  | 
    The order of preference is
 | 
|
5177  | 
    1. For a lightweight checkout, the current bound location.
 | 
|
5178  | 
    2. For branches that used to be checkouts, the previously-bound location.
 | 
|
5179  | 
    3. The push location.
 | 
|
5180  | 
    4. The parent location.
 | 
|
5181  | 
    If none of these is available, --bind-to must be specified.
 | 
|
5182  | 
    """
 | 
|
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
5183  | 
|
| 
3535.4.1
by Marius Kruger
 Update reconfigure help to say exactly what it wil do.  | 
5184  | 
_see_also = ['branches', 'checkouts', 'standalone-trees', 'working-trees']  | 
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
5185  | 
takes_args = ['location?']  | 
| 
3983.3.11
by Vincent Ladeuil
 Fix indentation as per Aaron's review and then some.  | 
5186  | 
takes_options = [  | 
5187  | 
RegistryOption.from_kwargs(  | 
|
5188  | 
'target_type',  | 
|
5189  | 
title='Target type',  | 
|
5190  | 
help='The type to reconfigure the directory to.',  | 
|
5191  | 
value_switches=True, enum_switch=False,  | 
|
5192  | 
branch='Reconfigure to be an unbound branch with no working tree.',  | 
|
5193  | 
tree='Reconfigure to be an unbound branch with a working tree.',  | 
|
5194  | 
checkout='Reconfigure to be a bound branch with a working tree.',  | 
|
5195  | 
lightweight_checkout='Reconfigure to be a lightweight'  | 
|
5196  | 
' checkout (with no local history).',  | 
|
5197  | 
standalone='Reconfigure to be a standalone branch '  | 
|
5198  | 
'(i.e. stop using shared repository).',  | 
|
5199  | 
use_shared='Reconfigure to use a shared repository.',  | 
|
5200  | 
with_trees='Reconfigure repository to create '  | 
|
5201  | 
'working trees on branches by default.',  | 
|
5202  | 
with_no_trees='Reconfigure repository to not create '  | 
|
5203  | 
                'working trees on branches by default.'
 | 
|
5204  | 
            ),
 | 
|
5205  | 
Option('bind-to', help='Branch to bind checkout to.', type=str),  | 
|
5206  | 
Option('force',  | 
|
5207  | 
help='Perform reconfiguration even if local changes'  | 
|
5208  | 
' will be lost.')  | 
|
5209  | 
        ]
 | 
|
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
5210  | 
|
5211  | 
def run(self, location=None, target_type=None, bind_to=None, force=False):  | 
|
5212  | 
directory = bzrdir.BzrDir.open(location)  | 
|
| 
2796.2.15
by Aaron Bentley
 More updates from review  | 
5213  | 
if target_type is None:  | 
| 
2830.2.4
by Martin Pool
 Fix previously hidden NameError in reconfigure  | 
5214  | 
raise errors.BzrCommandError('No target configuration specified')  | 
| 
2796.2.15
by Aaron Bentley
 More updates from review  | 
5215  | 
elif target_type == 'branch':  | 
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
5216  | 
reconfiguration = reconfigure.Reconfigure.to_branch(directory)  | 
5217  | 
elif target_type == 'tree':  | 
|
5218  | 
reconfiguration = reconfigure.Reconfigure.to_tree(directory)  | 
|
5219  | 
elif target_type == 'checkout':  | 
|
| 
3983.3.11
by Vincent Ladeuil
 Fix indentation as per Aaron's review and then some.  | 
5220  | 
reconfiguration = reconfigure.Reconfigure.to_checkout(  | 
5221  | 
directory, bind_to)  | 
|
| 
2796.2.19
by Aaron Bentley
 Support reconfigure --lightweight-checkout  | 
5222  | 
elif target_type == 'lightweight-checkout':  | 
5223  | 
reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(  | 
|
5224  | 
directory, bind_to)  | 
|
| 
3311.2.6
by Aaron Bentley
 rename 'sharing' to 'use-shared'  | 
5225  | 
elif target_type == 'use-shared':  | 
5226  | 
reconfiguration = reconfigure.Reconfigure.to_use_shared(directory)  | 
|
| 
3311.2.5
by Aaron Bentley
 Implement reconfigure --standalone and --sharing  | 
5227  | 
elif target_type == 'standalone':  | 
5228  | 
reconfiguration = reconfigure.Reconfigure.to_standalone(directory)  | 
|
| 
3921.4.3
by Matthew Fuller
 Add --with-trees and --with-no-trees to the 'reconfigure' command.  | 
5229  | 
elif target_type == 'with-trees':  | 
5230  | 
reconfiguration = reconfigure.Reconfigure.set_repository_trees(  | 
|
5231  | 
directory, True)  | 
|
5232  | 
elif target_type == 'with-no-trees':  | 
|
5233  | 
reconfiguration = reconfigure.Reconfigure.set_repository_trees(  | 
|
5234  | 
directory, False)  | 
|
| 
2796.2.5
by Aaron Bentley
 Implement reconfigure command  | 
5235  | 
reconfiguration.apply(force)  | 
5236  | 
||
5237  | 
||
| 
2999.1.1
by Ian Clatworthy
 migrate switch command into the core - was in BzrTools  | 
5238  | 
class cmd_switch(Command):  | 
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5239  | 
"""Set the branch of a checkout and update.  | 
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
5240  | 
|
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5241  | 
    For lightweight checkouts, this changes the branch being referenced.
 | 
5242  | 
    For heavyweight checkouts, this checks that there are no local commits
 | 
|
5243  | 
    versus the current bound branch, then it makes the local branch a mirror
 | 
|
5244  | 
    of the new location and binds to it.
 | 
|
| 
3565.6.15
by Marius Kruger
 update bind and switch command descriptions to state what will happen to nicknames.  | 
5245  | 
|
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5246  | 
    In both cases, the working tree is updated and uncommitted changes
 | 
| 
3565.6.15
by Marius Kruger
 update bind and switch command descriptions to state what will happen to nicknames.  | 
5247  | 
    are merged. The user can commit or revert these as they desire.
 | 
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5248  | 
|
5249  | 
    Pending merges need to be committed or reverted before using switch.
 | 
|
| 
3246.5.1
by Robert Collins
 * ``bzr switch`` will attempt to find branches to switch to relative to the  | 
5250  | 
|
5251  | 
    The path to the branch to switch to can be specified relative to the parent
 | 
|
5252  | 
    directory of the current branch. For example, if you are currently in a
 | 
|
5253  | 
    checkout of /path/to/branch, specifying 'newbranch' will find a branch at
 | 
|
5254  | 
    /path/to/newbranch.
 | 
|
| 
3565.6.15
by Marius Kruger
 update bind and switch command descriptions to state what will happen to nicknames.  | 
5255  | 
|
| 
3565.6.16
by Marius Kruger
 update nick command description to mention how it works for bound branches,  | 
5256  | 
    Bound branches use the nickname of its master branch unless it is set
 | 
| 
3565.6.15
by Marius Kruger
 update bind and switch command descriptions to state what will happen to nicknames.  | 
5257  | 
    locally, in which case switching will update the the local nickname to be
 | 
5258  | 
    that of the master.
 | 
|
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5259  | 
    """
 | 
| 
2999.1.1
by Ian Clatworthy
 migrate switch command into the core - was in BzrTools  | 
5260  | 
|
5261  | 
takes_args = ['to_location']  | 
|
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5262  | 
takes_options = [Option('force',  | 
5263  | 
help='Switch even if local commits will be lost.')  | 
|
5264  | 
                     ]
 | 
|
| 
2999.1.1
by Ian Clatworthy
 migrate switch command into the core - was in BzrTools  | 
5265  | 
|
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5266  | 
def run(self, to_location, force=False):  | 
| 
2999.1.2
by Ian Clatworthy
 incorporate review feedback including basic blackbox tests  | 
5267  | 
from bzrlib import switch  | 
| 
2999.1.1
by Ian Clatworthy
 migrate switch command into the core - was in BzrTools  | 
5268  | 
tree_location = '.'  | 
| 
2999.1.2
by Ian Clatworthy
 incorporate review feedback including basic blackbox tests  | 
5269  | 
control_dir = bzrdir.BzrDir.open_containing(tree_location)[0]  | 
| 
3565.6.1
by Marius Kruger
 Let 'bzr switch' update the nick too.  | 
5270  | 
branch = control_dir.open_branch()  | 
| 
3246.5.1
by Robert Collins
 * ``bzr switch`` will attempt to find branches to switch to relative to the  | 
5271  | 
try:  | 
5272  | 
to_branch = Branch.open(to_location)  | 
|
5273  | 
except errors.NotBranchError:  | 
|
| 
3602.3.2
by Adrian Wilkins
 `bzr switch` now finds the sibling of the bound branch of a heavy checkout when passed a location that does not immediately resolve to a branch.  | 
5274  | 
this_branch = control_dir.open_branch()  | 
| 
3602.3.4
by Adrian Wilkins
 Improved comments and documentation  | 
5275  | 
            # This may be a heavy checkout, where we want the master branch
 | 
| 
3602.3.3
by Adrian Wilkins
 Tweaked as suggested to be more lightweight about opening branches.  | 
5276  | 
this_url = this_branch.get_bound_location()  | 
| 
3602.3.4
by Adrian Wilkins
 Improved comments and documentation  | 
5277  | 
            # If not, use a local sibling
 | 
| 
3602.3.3
by Adrian Wilkins
 Tweaked as suggested to be more lightweight about opening branches.  | 
5278  | 
if this_url is None:  | 
5279  | 
this_url = this_branch.base  | 
|
| 
3246.5.1
by Robert Collins
 * ``bzr switch`` will attempt to find branches to switch to relative to the  | 
5280  | 
to_branch = Branch.open(  | 
| 
3602.3.4
by Adrian Wilkins
 Improved comments and documentation  | 
5281  | 
urlutils.join(this_url, '..', to_location))  | 
| 
3078.2.2
by Ian Clatworthy
 get switch tests passing on heavyweight checkouts  | 
5282  | 
switch.switch(control_dir, to_branch, force)  | 
| 
3565.6.7
by Marius Kruger
 * checkouts now use master nick when no explicit nick is set.  | 
5283  | 
if branch.get_config().has_explicit_nickname():  | 
5284  | 
branch = control_dir.open_branch() #get the new branch!  | 
|
5285  | 
branch.nick = to_branch.nick  | 
|
| 
2999.1.1
by Ian Clatworthy
 migrate switch command into the core - was in BzrTools  | 
5286  | 
note('Switched to branch: %s',  | 
5287  | 
urlutils.unescape_for_display(to_branch.base, 'utf-8'))  | 
|
5288  | 
||
5289  | 
||
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5290  | 
class cmd_view(Command):  | 
5291  | 
"""Manage filtered views.  | 
|
| 
3586.1.33
by Ian Clatworthy
 cleanup trailing whitespace  | 
5292  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5293  | 
    Views provide a mask over the tree so that users can focus on
 | 
5294  | 
    a subset of a tree when doing their work. After creating a view,
 | 
|
5295  | 
    commands that support a list of files - status, diff, commit, etc -
 | 
|
5296  | 
    effectively have that list of files implicitly given each time.
 | 
|
5297  | 
    An explicit list of files can still be given but those files
 | 
|
5298  | 
    must be within the current view.
 | 
|
5299  | 
||
5300  | 
    In most cases, a view has a short life-span: it is created to make
 | 
|
5301  | 
    a selected change and is deleted once that change is committed.
 | 
|
5302  | 
    At other times, you may wish to create one or more named views
 | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5303  | 
    and switch between them.
 | 
| 
3586.1.33
by Ian Clatworthy
 cleanup trailing whitespace  | 
5304  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5305  | 
    To disable the current view without deleting it, you can switch to
 | 
5306  | 
    the pseudo view called ``off``. This can be useful when you need
 | 
|
5307  | 
    to see the whole tree for an operation or two (e.g. merge) but
 | 
|
5308  | 
    want to switch back to your view after that.
 | 
|
5309  | 
||
5310  | 
    :Examples:
 | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5311  | 
      To define the current view::
 | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5312  | 
|
5313  | 
        bzr view file1 dir1 ...
 | 
|
5314  | 
||
5315  | 
      To list the current view::
 | 
|
5316  | 
||
5317  | 
        bzr view
 | 
|
5318  | 
||
5319  | 
      To delete the current view::
 | 
|
5320  | 
||
5321  | 
        bzr view --delete
 | 
|
5322  | 
||
5323  | 
      To disable the current view without deleting it::
 | 
|
5324  | 
||
5325  | 
        bzr view --switch off
 | 
|
5326  | 
||
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5327  | 
      To define a named view and switch to it::
 | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5328  | 
|
5329  | 
        bzr view --name view-name file1 dir1 ...
 | 
|
5330  | 
||
5331  | 
      To list a named view::
 | 
|
5332  | 
||
5333  | 
        bzr view --name view-name
 | 
|
5334  | 
||
5335  | 
      To delete a named view::
 | 
|
5336  | 
||
5337  | 
        bzr view --name view-name --delete
 | 
|
5338  | 
||
5339  | 
      To switch to a named view::
 | 
|
5340  | 
||
5341  | 
        bzr view --switch view-name
 | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5342  | 
|
5343  | 
      To list all views defined::
 | 
|
5344  | 
||
5345  | 
        bzr view --all
 | 
|
5346  | 
||
5347  | 
      To delete all views::
 | 
|
5348  | 
||
5349  | 
        bzr view --delete --all
 | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5350  | 
    """
 | 
5351  | 
||
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5352  | 
_see_also = []  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5353  | 
takes_args = ['file*']  | 
5354  | 
takes_options = [  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5355  | 
Option('all',  | 
5356  | 
help='Apply list or delete action to all views.',  | 
|
5357  | 
            ),
 | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5358  | 
Option('delete',  | 
5359  | 
help='Delete the view.',  | 
|
5360  | 
            ),
 | 
|
5361  | 
Option('name',  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5362  | 
help='Name of the view to define, list or delete.',  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5363  | 
type=unicode,  | 
5364  | 
            ),
 | 
|
5365  | 
Option('switch',  | 
|
5366  | 
help='Name of the view to switch to.',  | 
|
5367  | 
type=unicode,  | 
|
5368  | 
            ),
 | 
|
5369  | 
        ]
 | 
|
5370  | 
||
5371  | 
def run(self, file_list,  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5372  | 
all=False,  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5373  | 
delete=False,  | 
5374  | 
name=None,  | 
|
5375  | 
switch=None,  | 
|
5376  | 
            ):
 | 
|
5377  | 
tree, file_list = tree_files(file_list, apply_view=False)  | 
|
5378  | 
current_view, view_dict = tree.views.get_view_info()  | 
|
5379  | 
if name is None:  | 
|
5380  | 
name = current_view  | 
|
5381  | 
if delete:  | 
|
5382  | 
if file_list:  | 
|
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5383  | 
raise errors.BzrCommandError(  | 
5384  | 
"Both --delete and a file list specified")  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5385  | 
elif switch:  | 
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5386  | 
raise errors.BzrCommandError(  | 
5387  | 
"Both --delete and --switch specified")  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5388  | 
elif all:  | 
5389  | 
tree.views.set_view_info(None, {})  | 
|
5390  | 
self.outf.write("Deleted all views.\n")  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5391  | 
elif name is None:  | 
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5392  | 
raise errors.BzrCommandError("No current view to delete")  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5393  | 
else:  | 
5394  | 
tree.views.delete_view(name)  | 
|
5395  | 
self.outf.write("Deleted '%s' view.\n" % name)  | 
|
5396  | 
elif switch:  | 
|
5397  | 
if file_list:  | 
|
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5398  | 
raise errors.BzrCommandError(  | 
5399  | 
"Both --switch and a file list specified")  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5400  | 
elif all:  | 
5401  | 
raise errors.BzrCommandError(  | 
|
5402  | 
"Both --switch and --all specified")  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5403  | 
elif switch == 'off':  | 
5404  | 
if current_view is None:  | 
|
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5405  | 
raise errors.BzrCommandError("No current view to disable")  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5406  | 
tree.views.set_view_info(None, view_dict)  | 
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5407  | 
self.outf.write("Disabled '%s' view.\n" % (current_view))  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5408  | 
else:  | 
5409  | 
tree.views.set_view_info(switch, view_dict)  | 
|
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
5410  | 
view_str = views.view_display_str(tree.views.lookup_view())  | 
5411  | 
self.outf.write("Using '%s' view: %s\n" % (switch, view_str))  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5412  | 
elif all:  | 
5413  | 
if view_dict:  | 
|
5414  | 
self.outf.write('Views defined:\n')  | 
|
5415  | 
for view in sorted(view_dict):  | 
|
5416  | 
if view == current_view:  | 
|
5417  | 
active = "=>"  | 
|
5418  | 
else:  | 
|
5419  | 
active = " "  | 
|
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
5420  | 
view_str = views.view_display_str(view_dict[view])  | 
5421  | 
self.outf.write('%s %-20s %s\n' % (active, view, view_str))  | 
|
| 
3586.1.14
by Ian Clatworthy
 added --all option to the view command  | 
5422  | 
else:  | 
5423  | 
self.outf.write('No views defined.\n')  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5424  | 
elif file_list:  | 
5425  | 
if name is None:  | 
|
5426  | 
                # No name given and no current view set
 | 
|
5427  | 
name = 'my'  | 
|
5428  | 
elif name == 'off':  | 
|
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5429  | 
raise errors.BzrCommandError(  | 
5430  | 
"Cannot change the 'off' pseudo view")  | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5431  | 
tree.views.set_view(name, sorted(file_list))  | 
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
5432  | 
view_str = views.view_display_str(tree.views.lookup_view())  | 
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5433  | 
self.outf.write("Using '%s' view: %s\n" % (name, view_str))  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5434  | 
else:  | 
5435  | 
            # list the files
 | 
|
| 
3586.1.13
by Ian Clatworthy
 fix list of a known view when no current view set  | 
5436  | 
if name is None:  | 
5437  | 
                # No name given and no current view set
 | 
|
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5438  | 
self.outf.write('No current view.\n')  | 
5439  | 
else:  | 
|
| 
3586.1.20
by Ian Clatworthy
 centralise formatting of view file lists  | 
5440  | 
view_str = views.view_display_str(tree.views.lookup_view(name))  | 
| 
3586.1.11
by Ian Clatworthy
 tweak user feedback  | 
5441  | 
self.outf.write("'%s' view is: %s\n" % (name, view_str))  | 
| 
3586.1.9
by Ian Clatworthy
 first cut at view command  | 
5442  | 
|
5443  | 
||
| 
3254.2.1
by Daniel Watkins
 Added cmd_hooks.  | 
5444  | 
class cmd_hooks(Command):  | 
| 
4119.3.2
by Robert Collins
 Migrate existing hooks over to the new HookPoint infrastructure.  | 
5445  | 
"""Show hooks."""  | 
| 
3254.2.1
by Daniel Watkins
 Added cmd_hooks.  | 
5446  | 
|
| 
3254.2.9
by Daniel Watkins
 Made cmd_hooks hidden.  | 
5447  | 
hidden = True  | 
| 
3254.2.1
by Daniel Watkins
 Added cmd_hooks.  | 
5448  | 
|
| 
4119.3.2
by Robert Collins
 Migrate existing hooks over to the new HookPoint infrastructure.  | 
5449  | 
def run(self):  | 
5450  | 
for hook_key in sorted(hooks.known_hooks.keys()):  | 
|
5451  | 
some_hooks = hooks.known_hooks_key_to_object(hook_key)  | 
|
5452  | 
self.outf.write("%s:\n" % type(some_hooks).__name__)  | 
|
5453  | 
for hook_name, hook_point in sorted(some_hooks.items()):  | 
|
5454  | 
self.outf.write(" %s:\n" % (hook_name,))  | 
|
5455  | 
found_hooks = list(hook_point)  | 
|
5456  | 
if found_hooks:  | 
|
5457  | 
for hook in found_hooks:  | 
|
5458  | 
self.outf.write(" %s\n" %  | 
|
5459  | 
(some_hooks.get_hook_name(hook),))  | 
|
5460  | 
else:  | 
|
5461  | 
self.outf.write(" <no hooks installed>\n")  | 
|
| 
3254.2.1
by Daniel Watkins
 Added cmd_hooks.  | 
5462  | 
|
5463  | 
||
| 
0.16.80
by Aaron Bentley
 Rename shelve2/unshelve2 to shelve/unshelve  | 
5464  | 
class cmd_shelve(Command):  | 
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5465  | 
"""Temporarily set aside some changes from the current tree.  | 
5466  | 
||
5467  | 
    Shelve allows you to temporarily put changes you've made "on the shelf",
 | 
|
5468  | 
    ie. out of the way, until a later time when you can bring them back from
 | 
|
| 
3990.2.6
by Daniel Watkins
 Improved shelve documentation, as per #327421.  | 
5469  | 
    the shelf with the 'unshelve' command.  The changes are stored alongside
 | 
5470  | 
    your working tree, and so they aren't propagated along with your branch nor
 | 
|
5471  | 
    will they survive its deletion.
 | 
|
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5472  | 
|
| 
0.16.113
by Aaron Bentley
 Change ls-shelf to shelve --list  | 
5473  | 
    If shelve --list is specified, previously-shelved changes are listed.
 | 
5474  | 
||
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5475  | 
    Shelve is intended to help separate several sets of changes that have
 | 
5476  | 
    been inappropriately mingled.  If you just want to get rid of all changes
 | 
|
5477  | 
    and you don't need to restore them later, use revert.  If you want to
 | 
|
5478  | 
    shelve all text changes at once, use shelve --all.
 | 
|
5479  | 
||
5480  | 
    If filenames are specified, only the changes to those files will be
 | 
|
5481  | 
    shelved. Other files will be left untouched.
 | 
|
5482  | 
||
5483  | 
    If a revision is specified, changes since that revision will be shelved.
 | 
|
5484  | 
||
5485  | 
    You can put multiple items on the shelf, and by default, 'unshelve' will
 | 
|
5486  | 
    restore the most recently shelved changes.
 | 
|
5487  | 
    """
 | 
|
5488  | 
||
5489  | 
takes_args = ['file*']  | 
|
5490  | 
||
5491  | 
takes_options = [  | 
|
5492  | 
'revision',  | 
|
5493  | 
Option('all', help='Shelve all changes.'),  | 
|
5494  | 
'message',  | 
|
| 
0.16.108
by Aaron Bentley
 Shelf supports multiple diff writers.  | 
5495  | 
RegistryOption('writer', 'Method to use for writing diffs.',  | 
5496  | 
bzrlib.option.diff_writer_registry,  | 
|
| 
0.16.113
by Aaron Bentley
 Change ls-shelf to shelve --list  | 
5497  | 
value_switches=True, enum_switch=False),  | 
5498  | 
||
| 
0.16.119
by Aaron Bentley
 Fix option help style.  | 
5499  | 
Option('list', help='List shelved changes.'),  | 
| 
4100.3.1
by Aaron Bentley
 Implement shelve --destroy  | 
5500  | 
Option('destroy',  | 
5501  | 
help='Destroy removed changes instead of shelving them.'),  | 
|
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5502  | 
    ]
 | 
| 
0.16.117
by Aaron Bentley
 Remove references to ls-shelf  | 
5503  | 
_see_also = ['unshelve']  | 
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5504  | 
|
| 
0.16.108
by Aaron Bentley
 Shelf supports multiple diff writers.  | 
5505  | 
def run(self, revision=None, all=False, file_list=None, message=None,  | 
| 
4100.3.1
by Aaron Bentley
 Implement shelve --destroy  | 
5506  | 
writer=None, list=False, destroy=False):  | 
| 
0.16.113
by Aaron Bentley
 Change ls-shelf to shelve --list  | 
5507  | 
if list:  | 
5508  | 
return self.run_for_list()  | 
|
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5509  | 
from bzrlib.shelf_ui import Shelver  | 
| 
0.16.108
by Aaron Bentley
 Shelf supports multiple diff writers.  | 
5510  | 
if writer is None:  | 
5511  | 
writer = bzrlib.option.diff_writer_registry.get()  | 
|
| 
0.16.103
by Aaron Bentley
 raise UserAbort instead of doing sys.exit  | 
5512  | 
try:  | 
| 
0.16.108
by Aaron Bentley
 Shelf supports multiple diff writers.  | 
5513  | 
Shelver.from_args(writer(sys.stdout), revision, all, file_list,  | 
| 
4100.3.1
by Aaron Bentley
 Implement shelve --destroy  | 
5514  | 
message, destroy=destroy).run()  | 
| 
0.16.103
by Aaron Bentley
 raise UserAbort instead of doing sys.exit  | 
5515  | 
except errors.UserAbort:  | 
5516  | 
return 0  | 
|
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5517  | 
|
| 
0.16.113
by Aaron Bentley
 Change ls-shelf to shelve --list  | 
5518  | 
def run_for_list(self):  | 
| 
0.16.118
by Aaron Bentley
 Fix open_containing  | 
5519  | 
tree = WorkingTree.open_containing('.')[0]  | 
| 
0.16.113
by Aaron Bentley
 Change ls-shelf to shelve --list  | 
5520  | 
tree.lock_read()  | 
5521  | 
try:  | 
|
5522  | 
manager = tree.get_shelf_manager()  | 
|
5523  | 
shelves = manager.active_shelves()  | 
|
5524  | 
if len(shelves) == 0:  | 
|
5525  | 
note('No shelved changes.')  | 
|
5526  | 
return 0  | 
|
5527  | 
for shelf_id in reversed(shelves):  | 
|
5528  | 
message = manager.get_metadata(shelf_id).get('message')  | 
|
5529  | 
if message is None:  | 
|
5530  | 
message = '<no message>'  | 
|
5531  | 
self.outf.write('%3d: %s\n' % (shelf_id, message))  | 
|
5532  | 
return 1  | 
|
5533  | 
finally:  | 
|
5534  | 
tree.unlock()  | 
|
5535  | 
||
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5536  | 
|
| 
0.16.80
by Aaron Bentley
 Rename shelve2/unshelve2 to shelve/unshelve  | 
5537  | 
class cmd_unshelve(Command):  | 
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5538  | 
"""Restore shelved changes.  | 
5539  | 
||
5540  | 
    By default, the most recently shelved changes are restored. However if you
 | 
|
| 
3990.2.5
by Daniel Watkins
 Improve unshelve documentation, as per #327425.  | 
5541  | 
    specify a shelf by id those changes will be restored instead.  This works
 | 
5542  | 
    best when the changes don't depend on each other.
 | 
|
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5543  | 
    """
 | 
5544  | 
||
5545  | 
takes_args = ['shelf_id?']  | 
|
5546  | 
takes_options = [  | 
|
5547  | 
RegistryOption.from_kwargs(  | 
|
5548  | 
'action', help="The action to perform.",  | 
|
5549  | 
enum_switch=False, value_switches=True,  | 
|
5550  | 
apply="Apply changes and remove from the shelf.",  | 
|
5551  | 
dry_run="Show changes, but do not apply or remove them.",  | 
|
5552  | 
delete_only="Delete changes without applying them."  | 
|
5553  | 
        )
 | 
|
5554  | 
    ]
 | 
|
| 
0.16.117
by Aaron Bentley
 Remove references to ls-shelf  | 
5555  | 
_see_also = ['shelve']  | 
| 
0.16.74
by Aaron Bentley
 Merge with shelf-manager  | 
5556  | 
|
5557  | 
def run(self, shelf_id=None, action='apply'):  | 
|
5558  | 
from bzrlib.shelf_ui import Unshelver  | 
|
5559  | 
Unshelver.from_args(shelf_id, action).run()  | 
|
5560  | 
||
5561  | 
||
| 
4020.1.1
by Jelmer Vernooij
 Import clean-tree from bzrtools.  | 
5562  | 
class cmd_clean_tree(Command):  | 
5563  | 
"""Remove unwanted files from working tree.  | 
|
5564  | 
||
5565  | 
    By default, only unknown files, not ignored files, are deleted.  Versioned
 | 
|
5566  | 
    files are never deleted.
 | 
|
5567  | 
||
5568  | 
    Another class is 'detritus', which includes files emitted by bzr during
 | 
|
5569  | 
    normal operations and selftests.  (The value of these files decreases with
 | 
|
5570  | 
    time.)
 | 
|
5571  | 
||
5572  | 
    If no options are specified, unknown files are deleted.  Otherwise, option
 | 
|
5573  | 
    flags are respected, and may be combined.
 | 
|
5574  | 
||
5575  | 
    To check what clean-tree will do, use --dry-run.
 | 
|
5576  | 
    """
 | 
|
5577  | 
takes_options = [Option('ignored', help='Delete all ignored files.'),  | 
|
5578  | 
Option('detritus', help='Delete conflict files, merge'  | 
|
5579  | 
' backups, and failed selftest dirs.'),  | 
|
5580  | 
Option('unknown',  | 
|
5581  | 
help='Delete files unknown to bzr (default).'),  | 
|
5582  | 
Option('dry-run', help='Show files to delete instead of'  | 
|
5583  | 
' deleting them.'),  | 
|
5584  | 
Option('force', help='Do not prompt before deleting.')]  | 
|
5585  | 
def run(self, unknown=False, ignored=False, detritus=False, dry_run=False,  | 
|
5586  | 
force=False):  | 
|
5587  | 
from bzrlib.clean_tree import clean_tree  | 
|
5588  | 
if not (unknown or ignored or detritus):  | 
|
5589  | 
unknown = True  | 
|
5590  | 
if dry_run:  | 
|
5591  | 
force = True  | 
|
| 
4020.1.5
by Aaron Bentley
 Fix some formatting issues.  | 
5592  | 
clean_tree('.', unknown=unknown, ignored=ignored, detritus=detritus,  | 
| 
4020.1.1
by Jelmer Vernooij
 Import clean-tree from bzrtools.  | 
5593  | 
dry_run=dry_run, no_prompt=force)  | 
5594  | 
||
5595  | 
||
| 
2524.1.1
by Aaron Bentley
 Revert broken changes  | 
5596  | 
def _create_prefix(cur_transport):  | 
5597  | 
needed = [cur_transport]  | 
|
5598  | 
    # Recurse upwards until we can create a directory successfully
 | 
|
5599  | 
while True:  | 
|
5600  | 
new_transport = cur_transport.clone('..')  | 
|
5601  | 
if new_transport.base == cur_transport.base:  | 
|
| 
2604.1.1
by Martin Pool
 Fix unbound variable in _create_prefix (thanks vila)  | 
5602  | 
raise errors.BzrCommandError(  | 
5603  | 
"Failed to create path prefix for %s."  | 
|
5604  | 
% cur_transport.base)  | 
|
| 
2524.1.1
by Aaron Bentley
 Revert broken changes  | 
5605  | 
try:  | 
5606  | 
new_transport.mkdir('.')  | 
|
5607  | 
except errors.NoSuchFile:  | 
|
5608  | 
needed.append(new_transport)  | 
|
5609  | 
cur_transport = new_transport  | 
|
5610  | 
else:  | 
|
5611  | 
            break
 | 
|
5612  | 
    # Now we only need to create child directories
 | 
|
5613  | 
while needed:  | 
|
5614  | 
cur_transport = needed.pop()  | 
|
5615  | 
cur_transport.ensure_base()  | 
|
5616  | 
||
| 
2604.1.1
by Martin Pool
 Fix unbound variable in _create_prefix (thanks vila)  | 
5617  | 
|
| 
1185.16.33
by Martin Pool
 - move 'conflict' and 'resolved' from shipped plugin to regular builtins  | 
5618  | 
# these get imported and then picked up by the scan for cmd_*
 | 
5619  | 
# TODO: Some more consistent way to split command definitions across files;
 | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
5620  | 
# 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'.  | 
5621  | 
# aliases.  ideally we would avoid loading the implementation until the
 | 
5622  | 
# details were needed.
 | 
|
| 
2022.1.2
by John Arbash Meinel
 rename version_info => cmd_version_info  | 
5623  | 
from bzrlib.cmd_version_info import cmd_version_info  | 
| 
1185.35.4
by Aaron Bentley
 Implemented remerge  | 
5624  | 
from bzrlib.conflicts import cmd_resolve, cmd_conflicts, restore  | 
| 
2520.4.35
by Aaron Bentley
 zap obsolete changeset commands, add bundle-info command  | 
5625  | 
from bzrlib.bundle.commands import (  | 
5626  | 
cmd_bundle_info,  | 
|
5627  | 
    )
 | 
|
| 
1185.78.6
by John Arbash Meinel
 Adding sign-my-commits as a builtin, along with some simple tests.  | 
5628  | 
from bzrlib.sign_my_commits import cmd_sign_my_commits  | 
| 
3350.6.4
by Robert Collins
 First cut at pluralised VersionedFiles. Some rather massive API incompatabilities, primarily because of the difficulty of coherence among competing stores.  | 
5629  | 
from bzrlib.weave_commands import cmd_versionedfile_list, \  | 
| 
1616.1.17
by Martin Pool
 New 'weave-plan-merge' and 'weave-merge-text' commands lifted from weave.py  | 
5630  | 
cmd_weave_plan_merge, cmd_weave_merge_text  |