/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/help_topics/__init__.py

merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""A collection of extra help information for using bzr.
18
18
 
33
33
rendering on the screen naturally.
34
34
"""
35
35
 
36
 
from bzrlib import registry
 
36
import sys
 
37
 
 
38
import bzrlib
 
39
from bzrlib import (
 
40
    osutils,
 
41
    registry,
 
42
    )
37
43
 
38
44
 
39
45
# Section identifiers (map topics to the right place in the manual)
120
126
 
121
127
    topics = topic_registry.keys()
122
128
    lmax = max(len(topic) for topic in topics)
123
 
        
 
129
 
124
130
    out = []
125
131
    for topic in topics:
126
132
        summary = topic_registry.get_summary(topic)
128
134
    return ''.join(out)
129
135
 
130
136
 
 
137
def _load_from_file(topic_name):
 
138
    """Load help from a file.
 
139
 
 
140
    Topics are expected to be txt files in bzrlib.help_topics.
 
141
    """
 
142
    resource_name = osutils.pathjoin("en", "%s.txt" % (topic_name,))
 
143
    return osutils.resource_string('bzrlib.help_topics', resource_name)
 
144
 
 
145
 
131
146
def _help_on_revisionspec(name):
132
147
    """Generate the help for revision specs."""
133
148
    import re
134
149
    import bzrlib.revisionspec
135
150
 
136
151
    out = []
137
 
    out.append("Revision Identifiers\n")
138
 
    out.append("A revision, or a range bound, can be one of the following.\n")
 
152
    out.append(
 
153
"""Revision Identifiers
 
154
 
 
155
A revision identifier refers to a specific state of a branch's history. It can
 
156
be a revision number, or a keyword followed by ':' and often other
 
157
parameters. Some examples of identifiers are '3', 'last:1', 'before:yesterday'
 
158
and 'submit:'.
 
159
 
 
160
If 'REV1' and 'REV2' are revision identifiers, then 'REV1..REV2' denotes a
 
161
revision range. Examples: '3647..3649', 'date:yesterday..-1' and
 
162
'branch:/path/to/branch1/..branch:/branch2' (note that there are no quotes or
 
163
spaces around the '..').
 
164
 
 
165
Ranges are interpreted differently by different commands. To the "log" command,
 
166
a range is a sequence of log messages, but to the "diff" command, the range
 
167
denotes a change between revisions (and not a sequence of changes).  In
 
168
addition, "log" considers a closed range whereas "diff" and "merge" consider it
 
169
to be open-ended, that is, they include one end but not the other.  For example:
 
170
"bzr log -r 3647..3649" shows the messages of revisions 3647, 3648 and 3649,
 
171
while "bzr diff -r 3647..3649" includes the changes done in revisions 3648 and
 
172
3649, but not 3647.
 
173
 
 
174
The keywords used as revision selection methods are the following:
 
175
""")
139
176
    details = []
140
 
    details.append("\nFurther details are given below.\n")
 
177
    details.append("\nIn addition, plugins can provide other keywords.")
 
178
    details.append("\nA detailed description of each keyword is given below.\n")
141
179
 
142
180
    # The help text is indented 4 spaces - this re cleans that up below
143
181
    indent_re = re.compile(r'^    ', re.MULTILINE)
144
 
    for i in bzrlib.revisionspec.SPEC_TYPES:
 
182
    for prefix, i in bzrlib.revisionspec.revspec_registry.iteritems():
145
183
        doc = i.help_txt
146
184
        if doc == bzrlib.revisionspec.RevisionSpec.help_txt:
147
185
            summary = "N/A"
153
191
            #doc = indent_re.sub('', doc)
154
192
            while (doc[-2:] == '\n\n' or doc[-1:] == ' '):
155
193
                doc = doc[:-1]
156
 
        
 
194
 
157
195
        # Note: The leading : here are HACKs to get reStructuredText
158
196
        # 'field' formatting - we know that the prefix ends in a ':'.
159
197
        out.append(":%s\n\t%s" % (i.prefix, summary))
226
264
 
227
265
  bzr merge          pull in changes from another branch
228
266
  bzr commit         save some or all changes
 
267
  bzr send           send changes via email
229
268
 
230
269
  bzr log            show history of changes
231
270
  bzr check          validate storage
240
279
"""Global Options
241
280
 
242
281
These options may be used with any command, and may appear in front of any
243
 
command.  (e.g. "bzr --quiet help").
244
 
 
245
 
--quiet        Suppress informational output; only print errors and warnings
246
 
--version      Print the version number
247
 
 
248
 
--no-aliases   Do not process command aliases when running this command
 
282
command.  (e.g. "bzr --profile help").
 
283
 
 
284
--version      Print the version number. Must be supplied before the command.
 
285
--no-aliases   Do not process command aliases when running this command.
249
286
--builtin      Use the built-in version of a command, not the plugin version.
250
 
               This does not suppress other plugin effects
251
 
--no-plugins   Do not process any plugins
 
287
               This does not suppress other plugin effects.
 
288
--no-plugins   Do not process any plugins.
252
289
 
253
 
-Derror        Instead of normal error handling, always print a traceback on
254
 
               error.
255
 
--profile      Profile execution using the hotshot profiler
256
 
--lsprof       Profile execution using the lsprof profiler
 
290
--profile      Profile execution using the hotshot profiler.
 
291
--lsprof       Profile execution using the lsprof profiler.
257
292
--lsprof-file  Profile execution using the lsprof profiler, and write the
258
293
               results to a specified file.  If the filename ends with ".txt",
259
294
               text format will be used.  If the filename either starts with
260
295
               "callgrind.out" or end with ".callgrind", the output will be
261
296
               formatted for use with KCacheGrind. Otherwise, the output
262
297
               will be a pickle.
 
298
--coverage     Generate line coverage report in the specified directory.
263
299
 
264
300
See doc/developers/profiling.txt for more information on profiling.
265
 
 
266
 
Note: --version must be supplied before any command.
267
 
"""
 
301
A number of debug flags are also available to assist troubleshooting and
 
302
development.  See `bzr help debug-flags`.
 
303
"""
 
304
 
 
305
_standard_options = \
 
306
"""Standard Options
 
307
 
 
308
Standard options are legal for all commands.
 
309
 
 
310
--help, -h     Show help message.
 
311
--verbose, -v  Display more information.
 
312
--quiet, -q    Only display errors and warnings.
 
313
 
 
314
Unlike global options, standard options can be used in aliases.
 
315
"""
 
316
 
268
317
 
269
318
_checkouts = \
270
319
"""Checkouts
308
357
Lightweight checkouts work best when you have fast reliable access to the
309
358
master branch. This means that if the master branch is on the same disk or LAN
310
359
a lightweight checkout will be faster than a heavyweight one for any commands
311
 
that modify the revision history (as only one copy branch needs to be updated).
312
 
Heavyweight checkouts will generally be faster for any command that uses the
313
 
history but does not change it, but if the master branch is on the same disk
314
 
then there wont be a noticeable difference.
 
360
that modify the revision history (as only one copy of the branch needs to
 
361
be updated). Heavyweight checkouts will generally be faster for any command
 
362
that uses the history but does not change it, but if the master branch is on
 
363
the same disk then there won't be a noticeable difference.
315
364
 
316
365
Another possible use for a checkout is to use it with a treeless repository
317
366
containing your branches, where you maintain only one working tree by
318
 
switching the master branch that the checkout points to when you want to 
 
367
switching the master branch that the checkout points to when you want to
319
368
work on a different branch.
320
369
 
321
370
Obviously to commit on a checkout you need to be able to write to the master
336
385
              checkout
337
386
  update      Pull any changes in the master branch in to your checkout
338
387
  commit      Make a commit that is sent to the master branch. If you have
339
 
              a heavy checkout then the --local option will commit to the 
 
388
              a heavy checkout then the --local option will commit to the
340
389
              checkout without sending the commit to the master
341
390
  bind        Change the master branch that the commits in the checkout will
342
391
              be sent to
352
401
 
353
402
Repositories are a form of database. Bzr will usually maintain this for
354
403
good performance automatically, but in some situations (e.g. when doing
355
 
very many commits in a short time period) you may want to ask bzr to 
 
404
very many commits in a short time period) you may want to ask bzr to
356
405
optimise the database indices. This can be done by the 'bzr pack' command.
357
406
 
358
407
By default just running 'bzr init' will create a repository within the new
428
477
               this will update the tree to match the branch.
429
478
"""
430
479
 
 
480
 
 
481
_branches = \
 
482
"""Branches
 
483
 
 
484
A branch consists of the state of a project, including all of its
 
485
history. All branches have a repository associated (which is where the
 
486
branch history is stored), but multiple branches may share the same
 
487
repository (a shared repository). Branches can be copied and merged.
 
488
 
 
489
Related commands::
 
490
 
 
491
  init    Change a directory into a versioned branch.
 
492
  branch  Create a new copy of a branch.
 
493
  merge   Perform a three-way merge.
 
494
"""
 
495
 
 
496
 
 
497
_standalone_trees = \
 
498
"""Standalone Trees
 
499
 
 
500
A standalone tree is a working tree with an associated repository. It
 
501
is an independently usable branch, with no dependencies on any other.
 
502
Creating a standalone tree (via bzr init) is the quickest way to put
 
503
an existing project under version control.
 
504
 
 
505
Related Commands::
 
506
 
 
507
  init    Make a directory into a versioned branch.
 
508
"""
 
509
 
 
510
 
431
511
_status_flags = \
432
512
"""Status Flags
433
513
 
444
524
  - File unversioned
445
525
  R File renamed
446
526
  ? File unknown
 
527
  X File nonexistent (and unknown to bzr)
447
528
  C File has conflicts
448
529
  P Entry for a pending merge (not a file)
449
530
 
472
553
BZR_PLUGIN_PATH  Paths where bzr should look for plugins.
473
554
BZR_HOME         Directory holding .bazaar config dir. Overrides HOME.
474
555
BZR_HOME (Win32) Directory holding bazaar config dir. Overrides APPDATA and HOME.
 
556
BZR_REMOTE_PATH  Full name of remote 'bzr' command (for bzr+ssh:// URLs).
 
557
BZR_SSH          SSH client: paramiko (default), openssh, ssh, plink.
 
558
BZR_LOG          Location of .bzr.log (use '/dev/null' to suppress log).
 
559
BZR_LOG (Win32)  Location of .bzr.log (use 'NUL' to suppress log).
475
560
================ =================================================================
476
561
"""
477
562
 
497
582
  log10 = log --short -r -10..-1
498
583
"""
499
584
 
500
 
 
 
585
_criss_cross = \
 
586
"""Criss-Cross
 
587
 
 
588
A criss-cross in the branch history can cause the default merge technique
 
589
to emit more conflicts than would normally be expected.
 
590
 
 
591
In complex merge cases, ``bzr merge --lca`` or ``bzr merge --weave`` may give
 
592
better results.  You may wish to ``bzr revert`` the working tree and merge
 
593
again.  Alternatively, use ``bzr remerge`` on particular conflicted files.
 
594
 
 
595
Criss-crosses occur in a branch's history if two branches merge the same thing
 
596
and then merge one another, or if two branches merge one another at the same
 
597
time.  They can be avoided by having each branch only merge from or into a
 
598
designated central branch (a "star topology").
 
599
 
 
600
Criss-crosses cause problems because of the way merge works.  Bazaar's default
 
601
merge is a three-way merger; in order to merge OTHER into THIS, it must
 
602
find a basis for comparison, BASE.  Using BASE, it can determine whether
 
603
differences between THIS and OTHER are due to one side adding lines, or
 
604
from another side removing lines.
 
605
 
 
606
Criss-crosses mean there is no good choice for a base.  Selecting the recent
 
607
merge points could cause one side's changes to be silently discarded.
 
608
Selecting older merge points (which Bazaar does) mean that extra conflicts
 
609
are emitted.
 
610
 
 
611
The ``weave`` merge type is not affected by this problem because it uses
 
612
line-origin detection instead of a basis revision to determine the cause of
 
613
differences.
 
614
"""
 
615
 
 
616
_branches_out_of_sync = """Branches out of sync
 
617
 
 
618
When reconfiguring a checkout, tree or branch into a lightweight checkout,
 
619
a local branch must be destroyed.  (For checkouts, this is the local branch
 
620
that serves primarily as a cache.)  If the branch-to-be-destroyed does not
 
621
have the same last revision as the new reference branch for the lightweight
 
622
checkout, data could be lost, so Bazaar refuses.
 
623
 
 
624
How you deal with this depends on *why* the branches are out of sync.
 
625
 
 
626
If you have a checkout and have done local commits, you can get back in sync
 
627
by running "bzr update" (and possibly "bzr commit").
 
628
 
 
629
If you have a branch and the remote branch is out-of-date, you can push
 
630
the local changes using "bzr push".  If the local branch is out of date, you
 
631
can do "bzr pull".  If both branches have had changes, you can merge, commit
 
632
and then push your changes.  If you decide that some of the changes aren't
 
633
useful, you can "push --overwrite" or "pull --overwrite" instead.
 
634
"""
 
635
 
 
636
 
 
637
_storage_formats = \
 
638
"""Storage Formats
 
639
 
 
640
To ensure that older clients do not access data incorrectly,
 
641
Bazaar's policy is to introduce a new storage format whenever
 
642
new features requiring new metadata are added. New storage
 
643
formats may also be introduced to improve performance and
 
644
scalability.
 
645
 
 
646
Use the following guidelines to select a format (stopping
 
647
as soon as a condition is true):
 
648
 
 
649
* If you are working on an existing project, use whatever
 
650
  format that project is using. (Bazaar will do this for you
 
651
  by default).
 
652
 
 
653
* If you are using bzr-svn to interoperate with a Subversion
 
654
  repository, use 1.14-rich-root.
 
655
 
 
656
* If you are working on a project with big trees (5000+ paths)
 
657
  or deep history (5000+ revisions), use 1.14.
 
658
 
 
659
* Otherwise, use the default format - it is good enough for
 
660
  most projects.
 
661
 
 
662
If some of your developers are unable to use the most recent
 
663
version of Bazaar (due to distro package availability say), be
 
664
sure to adjust the guidelines above accordingly. For example,
 
665
you may need to select 1.9 instead of 1.14 if your project has
 
666
standardized on Bazaar 1.13.1 say.
 
667
 
 
668
Note: Many of the currently supported formats have two variants:
 
669
a plain one and a rich-root one. The latter include an additional
 
670
field about the root of the tree. There is no performance cost
 
671
for using a rich-root format but you cannot easily merge changes
 
672
from a rich-root format into a plain format. As a consequence,
 
673
moving a project to a rich-root format takes some co-ordination
 
674
in that all contributors need to upgrade their repositories
 
675
around the same time. (It is for this reason that we have delayed
 
676
making a rich-root format the default so far, though we will do
 
677
so at some appropriate time in the future.)
 
678
 
 
679
See ``bzr help current-formats`` for the complete list of
 
680
currently supported formats. See ``bzr help other-formats`` for
 
681
descriptions of any available experimental and deprecated formats.
 
682
"""
 
683
 
 
684
 
 
685
# Register help topics
501
686
topic_registry.register("revisionspec", _help_on_revisionspec,
502
687
                        "Explain how to use --revision")
503
688
topic_registry.register('basic', _basic_help, "Basic commands", SECT_HIDDEN)
504
689
topic_registry.register('topics', _help_on_topics, "Topics list", SECT_HIDDEN)
505
 
def get_format_topic(topic):
506
 
    from bzrlib import bzrdir
507
 
    return "Storage Formats\n\n" + bzrdir.format_registry.help_topic(topic)
508
 
topic_registry.register('formats', get_format_topic, 'Directory formats')
 
690
def get_current_formats_topic(topic):
 
691
    from bzrlib import bzrdir
 
692
    return "Current Storage Formats\n\n" + \
 
693
        bzrdir.format_registry.help_topic(topic)
 
694
def get_other_formats_topic(topic):
 
695
    from bzrlib import bzrdir
 
696
    return "Other Storage Formats\n\n" + \
 
697
        bzrdir.format_registry.help_topic(topic)
 
698
topic_registry.register('current-formats', get_current_formats_topic,
 
699
    'Current storage formats')
 
700
topic_registry.register('other-formats', get_other_formats_topic,
 
701
    'Experimental and deprecated storage formats')
 
702
topic_registry.register('standard-options', _standard_options,
 
703
                        'Options that can be used with any command')
509
704
topic_registry.register('global-options', _global_options,
510
 
                        'Options that can be used with any command')
511
 
topic_registry.register('checkouts', _checkouts,
512
 
                        'Information on what a checkout is', SECT_CONCEPT)
 
705
                    'Options that control how Bazaar runs')
513
706
topic_registry.register('urlspec', _help_on_transport,
514
707
                        "Supported transport protocols")
515
708
topic_registry.register('status-flags', _status_flags,
516
709
                        "Help on status flags")
517
710
def get_bugs_topic(topic):
518
711
    from bzrlib import bugtracker
519
 
    return "Bug Trackers\n\n" + bugtracker.tracker_registry.help_topic(topic)
520
 
topic_registry.register('bugs', get_bugs_topic, 'Bug tracker support')
 
712
    return ("Bug Tracker Settings\n\n" +
 
713
        bugtracker.tracker_registry.help_topic(topic))
 
714
topic_registry.register('bugs', get_bugs_topic, 'Bug tracker settings')
 
715
topic_registry.register('env-variables', _env_variables,
 
716
                        'Environment variable names and values')
 
717
topic_registry.register('files', _files,
 
718
                        'Information on configuration and log files')
 
719
topic_registry.register_lazy('hooks', 'bzrlib.hooks', 'hooks_help_text',
 
720
                        'Points at which custom processing can be added')
 
721
 
 
722
# Load some of the help topics from files. Note that topics which reproduce API
 
723
# details will tend to skew (quickly usually!) so please seek other solutions
 
724
# for such things.
 
725
topic_registry.register('authentication', _load_from_file,
 
726
                        'Information on configuring authentication')
 
727
topic_registry.register('configuration', _load_from_file,
 
728
                        'Details on the configuration settings available')
 
729
topic_registry.register('conflicts', _load_from_file,
 
730
                        'Types of conflicts and what to do about them')
 
731
topic_registry.register('debug-flags', _load_from_file,
 
732
                        'Options to show or record debug information')
 
733
topic_registry.register('log-formats', _load_from_file,
 
734
                        'Details on the logging formats available')
 
735
 
 
736
 
 
737
# Register concept topics.
 
738
# Note that we might choose to remove these from the online help in the
 
739
# future or implement them via loading content from files. In the meantime,
 
740
# please keep them concise.
 
741
topic_registry.register('branches', _branches,
 
742
                        'Information on what a branch is', SECT_CONCEPT)
 
743
topic_registry.register('checkouts', _checkouts,
 
744
                        'Information on what a checkout is', SECT_CONCEPT)
 
745
topic_registry.register('content-filters', _load_from_file,
 
746
                        'Conversion of content into/from working trees',
 
747
                        SECT_CONCEPT)
 
748
topic_registry.register('eol', _load_from_file,
 
749
                        'Information on end-of-line handling',
 
750
                        SECT_CONCEPT)
 
751
topic_registry.register('formats', _storage_formats,
 
752
                        'Information on choosing a storage format',
 
753
                        SECT_CONCEPT)
 
754
topic_registry.register('patterns', _load_from_file,
 
755
                        'Information on the pattern syntax',
 
756
                        SECT_CONCEPT)
521
757
topic_registry.register('repositories', _repositories,
522
758
                        'Basic information on shared repositories.',
523
759
                        SECT_CONCEPT)
 
760
topic_registry.register('rules', _load_from_file,
 
761
                        'Information on defining rule-based preferences',
 
762
                        SECT_CONCEPT)
 
763
topic_registry.register('standalone-trees', _standalone_trees,
 
764
                        'Information on what a standalone tree is',
 
765
                        SECT_CONCEPT)
524
766
topic_registry.register('working-trees', _working_trees,
525
767
                        'Information on working trees', SECT_CONCEPT)
526
 
topic_registry.register('env-variables', _env_variables,
527
 
                        'Environment variable names and values')
528
 
topic_registry.register('files', _files,
529
 
                        'Information on configuration and log files')
 
768
topic_registry.register('criss-cross', _criss_cross,
 
769
                        'Information on criss-cross merging', SECT_CONCEPT)
 
770
topic_registry.register('sync-for-reconfigure', _branches_out_of_sync,
 
771
                        'Steps to resolve "out-of-sync" when reconfiguring',
 
772
                        SECT_CONCEPT)
530
773
 
531
774
 
532
775
class HelpTopicIndex(object):
573
816
            returned instead of plain text.
574
817
        """
575
818
        result = topic_registry.get_detail(self.topic)
576
 
        # there is code duplicated here and in bzrlib/plugin.py's 
 
819
        # there is code duplicated here and in bzrlib/plugin.py's
577
820
        # matching Topic code. This should probably be factored in
578
821
        # to a helper function and a common base class.
579
822
        if additional_see_also is not None: