100
100
return ''.join(out)
103
def _help_on_transport(name):
104
from bzrlib.transport import (
105
transport_list_registry,
109
def add_string(proto, help, maxl, prefix_width=20):
110
help_lines = textwrap.wrap(help, maxl - prefix_width)
111
line_with_indent = '\n' + ' ' * prefix_width
112
help_text = line_with_indent.join(help_lines)
113
return "%-20s%s\n" % (proto, help_text)
116
a1 = a[:a.rfind("://")]
117
b1 = b[:b.rfind("://")]
128
protos = transport_list_registry.keys( )
129
protos.sort(sort_func)
131
shorthelp = transport_list_registry.get_help(proto)
134
if proto.endswith("://"):
135
protl.extend(add_string(proto, shorthelp, 79))
137
decl.extend(add_string(proto, shorthelp, 79))
140
out = "\nSupported URL prefix\n--------------------\n" + \
144
out += "\nSupported modifiers\n-------------------\n" + \
151
104
"""Bazaar -- a free distributed version-control tool
152
105
http://bazaar-vcs.org/
193
146
--profile Profile execution using the hotshot profiler
194
147
--lsprof Profile execution using the lsprof profiler
195
148
--lsprof-file Profile execution using the lsprof profiler, and write the
196
results to a specified file. If the filename ends with ".txt",
197
text format will be used. If the filename ends with
198
".callgrind", output will be formatted for use with KCacheGrind.
199
Otherwise, the output will be a pickle.
201
See doc/developers/profiling.txt for more information on profiling.
149
results to a specified file.
203
151
Note: --version must be supplied before any command.
281
229
commits are only made locally
287
Repositories in Bazaar are where committed information is stored. There is
288
a repository associated with every branch.
290
Repositories are a form of database. Bzr will usually maintain this for
291
good performance automatically, but in some situations (e.g. when doing
292
very many commits in a short time period) you may want to ask bzr to
293
optimise the database indices. This can be done by the 'bzr pack' command.
295
By default just running 'bzr init' will create a repository within the new
296
branch but it is possible to create a shared repository which allows multiple
297
branches to share their information in the same location. When a new branch is
298
created it will first look to see if there is a containing shared repository it
301
When two branches of the same project share a repository, there is
302
generally a large space saving. For some operations (e.g. branching
303
within the repository) this translates in to a large time saving.
305
To create a shared repository use the init-repository command (or the alias
306
init-repo). This command takes the location of the repository to create. This
307
means that 'bzr init-repository repo' will create a directory named 'repo',
308
which contains a shared repository. Any new branches that are created in this
309
directory will then use it for storage.
311
It is a good idea to create a repository whenever you might create more
312
than one branch of a project. This is true for both working areas where you
313
are doing the development, and any server areas that you use for hosting
314
projects. In the latter case, it is common to want branches without working
315
trees. Since the files in the branch will not be edited directly there is no
316
need to use up disk space for a working tree. To create a repository in which
317
the branches will not have working trees pass the '--no-trees' option to
322
init-repository Create a shared repository. Use --no-trees to create one
323
in which new branches won't get a working tree.
330
A working tree is the contents of a branch placed on disk so that you can
331
see the files and edit them. The working tree is where you make changes to a
332
branch, and when you commit the current state of the working tree is the
333
snapshot that is recorded in the commit.
335
When you push a branch to a remote system, a working tree will not be
336
created. If one is already present the files will not be updated. The
337
branch information will be updated and the working tree will be marked
338
as out-of-date. Updating a working tree remotely is difficult, as there
339
may be uncommitted changes or the update may cause content conflicts that are
340
difficult to deal with remotely.
342
If you have a branch with no working tree you can use the 'checkout' command
343
to create a working tree. If you run 'bzr checkout .' from the branch it will
344
create the working tree. If the branch is updated remotely, you can update the
345
working tree by running 'bzr update' in that directory.
347
If you have a branch with a working tree that you do not want the 'remove-tree'
348
command will remove the tree if it is safe. This can be done to avoid the
349
warning about the remote working tree not being updated when pushing to the
350
branch. It can also be useful when working with a '--no-trees' repository
351
(see 'bzr help repositories').
353
If you want to have a working tree on a remote machine that you push to you
354
can either run 'bzr update' in the remote branch after each push, or use some
355
other method to update the tree during the push. There is an 'rspush' plugin
356
that will update the working tree using rsync as well as doing a push. There
357
is also a 'push-and-update' plugin that automates running 'bzr update' via SSH
362
checkout Create a working tree when a branch does not have one.
363
remove-tree Removes the working tree from a branch when it is safe to do so.
364
update When a working tree is out of sync with it's associated branch
365
this will update the tree to match the branch.
371
Status flags are used to summarise changes to the working tree in a concise
372
manner. They are in the form:
374
where the columns' meanings are as follows.
376
Column 1: versioning / renames
382
P Entry for a pending merge (not a file)
391
* The execute bit was changed
395
233
topic_registry.register("revisionspec", _help_on_revisionspec,
396
234
"Explain how to use --revision")
404
242
'Options that can be used with any command')
405
243
topic_registry.register('checkouts', _checkouts,
406
244
'Information on what a checkout is')
407
topic_registry.register('urlspec', _help_on_transport,
408
"Supported transport protocols")
409
topic_registry.register('status-flags', _status_flags,
410
"Help on status flags")
411
def get_bugs_topic(topic):
412
from bzrlib import bugtracker
413
return bugtracker.tracker_registry.help_topic(topic)
414
topic_registry.register('bugs', get_bugs_topic, 'Bug tracker support')
415
topic_registry.register('repositories', _repositories,
416
'Basic information on shared repositories.')
417
topic_registry.register('working-trees', _working_trees,
418
'Information on working trees')
421
class HelpTopicIndex(object):
422
"""A index for bzr help that returns topics."""
427
def get_topics(self, topic):
428
"""Search for topic in the HelpTopicRegistry.
430
:param topic: A topic to search for. None is treated as 'basic'.
431
:return: A list which is either empty or contains a single
432
RegisteredTopic entry.
436
if topic in topic_registry:
437
return [RegisteredTopic(topic)]
442
class RegisteredTopic(object):
443
"""A help topic which has been registered in the HelpTopicRegistry.
445
These topics consist of nothing more than the name of the topic - all
446
data is retrieved on demand from the registry.
449
def __init__(self, topic):
452
:param topic: The name of the topic that this represents.
456
def get_help_text(self, additional_see_also=None):
457
"""Return a string with the help for this topic.
459
:param additional_see_also: Additional help topics to be
462
result = topic_registry.get_detail(self.topic)
463
# there is code duplicated here and in bzrlib/plugin.py's
464
# matching Topic code. This should probably be factored in
465
# to a helper function and a common base class.
466
if additional_see_also is not None:
467
see_also = sorted(set(additional_see_also))
471
result += '\nSee also: '
472
result += ', '.join(see_also)
476
def get_help_topic(self):
477
"""Return the help topic this can be found under."""