275
275
--dry-run will show which files would be added, but not actually
278
--file-ids-from will try to use the file ids from the supplied path.
279
It looks up ids trying to find a matching parent directory with the
280
same filename, and then by pure path.
278
282
takes_args = ['file*']
279
takes_options = ['no-recurse', 'dry-run', 'verbose']
283
takes_options = ['no-recurse', 'dry-run', 'verbose',
284
Option('file-ids-from', type=unicode,
285
help='Lookup file ids from here')]
280
286
encoding_type = 'replace'
282
def run(self, file_list, no_recurse=False, dry_run=False, verbose=False):
288
def run(self, file_list, no_recurse=False, dry_run=False, verbose=False,
283
290
import bzrlib.add
285
action = bzrlib.add.AddAction(to_file=self.outf,
286
should_print=(not is_quiet()))
288
added, ignored = bzrlib.add.smart_add(file_list, not no_recurse,
292
if file_ids_from is not None:
294
base_tree, base_path = WorkingTree.open_containing(
296
except errors.NoWorkingTree:
297
base_branch, base_path = branch.Branch.open_containing(
299
base_tree = base_branch.basis_tree()
301
action = bzrlib.add.AddFromBaseAction(base_tree, base_path,
302
to_file=self.outf, should_print=(not is_quiet()))
304
action = bzrlib.add.AddAction(to_file=self.outf,
305
should_print=(not is_quiet()))
307
added, ignored = bzrlib.add.smart_add(file_list, not no_recurse,
289
308
action=action, save=not dry_run)
290
309
if len(ignored) > 0:
762
781
old_format = bzrdir.BzrDirFormat.get_default_format()
763
782
bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
766
checkout = bzrdir.BzrDirMetaFormat1().initialize(to_location)
767
branch.BranchReferenceFormat().initialize(checkout, source)
769
checkout_branch = bzrdir.BzrDir.create_branch_convenience(
770
to_location, force_new_tree=False)
771
checkout = checkout_branch.bzrdir
772
checkout_branch.bind(source)
773
if revision_id is not None:
774
rh = checkout_branch.revision_history()
775
checkout_branch.set_revision_history(rh[:rh.index(revision_id) + 1])
776
checkout.create_workingtree(revision_id)
784
source.create_checkout(to_location, revision_id, lightweight)
778
786
bzrdir.BzrDirFormat.set_default_format(old_format)
1944
1952
Option('lsprof-timed',
1945
1953
help='generate lsprof output for benchmarked'
1946
1954
' sections of code.'),
1955
Option('cache-dir', type=str,
1956
help='a directory to cache intermediate'
1957
' benchmark steps'),
1949
1960
def run(self, testspecs_list=None, verbose=None, one=False,
1950
1961
keep_output=False, transport=None, benchmark=None,
1962
lsprof_timed=None, cache_dir=None):
1952
1963
import bzrlib.ui
1953
1964
from bzrlib.tests import selftest
1954
1965
import bzrlib.benchmarks as benchmarks
1966
from bzrlib.benchmarks import tree_creator
1968
if cache_dir is not None:
1969
tree_creator.TreeCreator.CACHE_ROOT = osutils.abspath(cache_dir)
1955
1970
# we don't want progress meters from the tests to go to the
1956
1971
# real output; and we don't want log messages cluttering up
1957
1972
# the real logs.
1970
1985
test_suite_factory = benchmarks.test_suite
1971
1986
if verbose is None:
1988
benchfile = open(".perf_history", "at")
1974
1990
test_suite_factory = None
1975
1991
if verbose is None:
1976
1992
verbose = False
1977
result = selftest(verbose=verbose,
1979
stop_on_failure=one,
1980
keep_output=keep_output,
1981
transport=transport,
1982
test_suite_factory=test_suite_factory,
1983
lsprof_timed=lsprof_timed)
1995
result = selftest(verbose=verbose,
1997
stop_on_failure=one,
1998
keep_output=keep_output,
1999
transport=transport,
2000
test_suite_factory=test_suite_factory,
2001
lsprof_timed=lsprof_timed,
2002
bench_history=benchfile)
2004
if benchfile is not None:
1985
2007
info('tests passed')
1990
2012
ui.ui_factory = save_ui
1993
def _get_bzr_branch():
1994
"""If bzr is run from a branch, return Branch or None"""
1995
from os.path import dirname
1998
branch = Branch.open(dirname(osutils.abspath(dirname(__file__))))
2000
except errors.BzrError:
2006
print "Bazaar (bzr) %s" % bzrlib.__version__
2007
# is bzrlib itself in a branch?
2008
branch = _get_bzr_branch()
2010
rh = branch.revision_history()
2012
print " bzr checkout, revision %d" % (revno,)
2013
print " nick: %s" % (branch.nick,)
2015
print " revid: %s" % (rh[-1],)
2016
print "Using python interpreter:", sys.executable
2018
print "Using python standard library:", os.path.dirname(site.__file__)
2019
print "Using bzrlib:",
2020
if len(bzrlib.__path__) > 1:
2021
# print repr, which is a good enough way of making it clear it's
2022
# more than one element (eg ['/foo/bar', '/foo/bzr'])
2023
print repr(bzrlib.__path__)
2025
print bzrlib.__path__[0]
2028
print bzrlib.__copyright__
2029
print "http://bazaar-vcs.org/"
2031
print "bzr comes with ABSOLUTELY NO WARRANTY. bzr is free software, and"
2032
print "you may use, modify and redistribute it under the terms of the GNU"
2033
print "General Public License version 2 or later."
2036
2015
class cmd_version(Command):
2037
2016
"""Show version of bzr."""
2039
2018
@display_command
2020
from bzrlib.version import show_version
2123
2103
takes_args = ['branch?']
2124
2104
takes_options = ['revision', 'force', 'merge-type', 'reprocess', 'remember',
2125
2105
Option('show-base', help="Show base revision text in "
2107
Option('uncommitted', help='Apply uncommitted changes'
2108
' from a working copy, instead of branch changes')]
2128
2110
def help(self):
2129
2111
from merge import merge_type_help
2131
2113
return getdoc(self) + '\n' + merge_type_help()
2133
2115
def run(self, branch=None, revision=None, force=False, merge_type=None,
2134
show_base=False, reprocess=False, remember=False):
2116
show_base=False, reprocess=False, remember=False,
2135
2118
if merge_type is None:
2136
2119
merge_type = Merge3Merger
2153
2136
branch = self._get_remembered_parent(tree, branch, 'Merging from')
2155
2138
if revision is None or len(revision) < 1:
2157
other = [branch, -1]
2141
other = [branch, None]
2144
other = [branch, -1]
2158
2145
other_branch, path = Branch.open_containing(branch)
2148
raise BzrCommandError('Cannot use --uncommitted and --revision'
2149
' at the same time.')
2160
2150
if len(revision) == 1:
2161
2151
base = [None, None]
2162
2152
other_branch, path = Branch.open_containing(branch)
2504
2494
class cmd_testament(Command):
2505
2495
"""Show testament (signing-form) of a revision."""
2506
takes_options = ['revision', 'long',
2496
takes_options = ['revision',
2497
Option('long', help='Produce long-format testament'),
2507
2498
Option('strict', help='Produce a strict-format'
2509
2500
takes_args = ['branch?']