~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Robert Collins
  • Date: 2007-08-15 01:26:30 UTC
  • mfrom: (2698 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2741.
  • Revision ID: robertc@robertcollins.net-20070815012630-xqjtm5z2c4718n8s
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
501
501
class cmd_mv(Command):
502
502
    """Move or rename a file.
503
503
 
504
 
    usage:
 
504
    :Usage:
505
505
        bzr mv OLDNAME NEWNAME
 
506
 
506
507
        bzr mv SOURCE... DESTINATION
507
508
 
508
509
    If the last argument is a versioned directory, all the other names
1084
1085
    takes_options = ['verbose',
1085
1086
        Option('new', help='Remove newly-added files.'),
1086
1087
        RegistryOption.from_kwargs('file-deletion-strategy',
1087
 
            'The file deletion mode to be used',
 
1088
            'The file deletion mode to be used.',
1088
1089
            title='Deletion Strategy', value_switches=True, enum_switch=False,
1089
1090
            safe='Only delete files if they can be'
1090
1091
                 ' safely recovered (default).',
1243
1244
    If there is already a branch at the location but it has no working tree,
1244
1245
    the tree can be populated with 'bzr checkout'.
1245
1246
 
1246
 
    Recipe for importing a tree of files:
 
1247
    Recipe for importing a tree of files::
 
1248
 
1247
1249
        cd ~/project
1248
1250
        bzr init
1249
1251
        bzr add .
1251
1253
        bzr commit -m 'imported project'
1252
1254
    """
1253
1255
 
1254
 
    _see_also = ['init-repo', 'branch', 'checkout']
 
1256
    _see_also = ['init-repository', 'branch', 'checkout']
1255
1257
    takes_args = ['location?']
1256
1258
    takes_options = [
1257
1259
        Option('create-prefix',
1328
1330
    If the --no-trees option is used then the branches in the repository
1329
1331
    will not have working trees by default.
1330
1332
 
1331
 
    example:
1332
 
        bzr init-repo --no-trees repo
1333
 
        bzr init repo/trunk
1334
 
        bzr checkout --lightweight repo/trunk trunk-checkout
1335
 
        cd trunk-checkout
1336
 
        (add files here)
1337
 
 
1338
 
    See 'bzr help repositories' for more information.
 
1333
    :Examples:
 
1334
        Create a shared repositories holding just branches::
 
1335
 
 
1336
            bzr init-repo --no-trees repo
 
1337
            bzr init repo/trunk
 
1338
 
 
1339
        Make a lightweight checkout elsewhere::
 
1340
 
 
1341
            bzr checkout --lightweight repo/trunk trunk-checkout
 
1342
            cd trunk-checkout
 
1343
            (add files here)
1339
1344
    """
1340
1345
 
1341
 
    _see_also = ['init', 'branch', 'checkout']
 
1346
    _see_also = ['init', 'branch', 'checkout', 'repositories']
1342
1347
    takes_args = ["location"]
1343
1348
    takes_options = [RegistryOption('format',
1344
1349
                            help='Specify a format for this repository. See'
1376
1381
    "bzr diff -p1" is equivalent to "bzr diff --prefix old/:new/", and
1377
1382
    produces patches suitable for "patch -p1".
1378
1383
 
1379
 
    examples:
1380
 
        bzr diff
1381
 
            Shows the difference in the working tree versus the last commit
1382
 
        bzr diff -r1
1383
 
            Difference between the working tree and revision 1
1384
 
        bzr diff -r1..2
1385
 
            Difference between revision 2 and revision 1
1386
 
        bzr diff --prefix old/:new/
1387
 
            Same as 'bzr diff' but prefix paths with old/ and new/
1388
 
        bzr diff bzr.mine bzr.dev
1389
 
            Show the differences between the two working trees
1390
 
        bzr diff foo.c
1391
 
            Show just the differences for 'foo.c'
 
1384
    :Examples:
 
1385
        Shows the difference in the working tree versus the last commit::
 
1386
 
 
1387
            bzr diff
 
1388
 
 
1389
        Difference between the working tree and revision 1::
 
1390
 
 
1391
            bzr diff -r1
 
1392
 
 
1393
        Difference between revision 2 and revision 1::
 
1394
 
 
1395
            bzr diff -r1..2
 
1396
 
 
1397
        Same as 'bzr diff' but prefix paths with old/ and new/::
 
1398
 
 
1399
            bzr diff --prefix old/:new/
 
1400
 
 
1401
        Show the differences between the two working trees::
 
1402
 
 
1403
            bzr diff bzr.mine bzr.dev
 
1404
 
 
1405
        Show just the differences for 'foo.c'::
 
1406
 
 
1407
            bzr diff foo.c
1392
1408
    """
1393
1409
    # TODO: Option to use external diff command; could be GNU diff, wdiff,
1394
1410
    #       or a graphical diff.
1592
1608
    -r revision requests a specific revision, -r ..end or -r begin.. are
1593
1609
    also valid.
1594
1610
 
1595
 
    examples:
1596
 
        bzr log
1597
 
        bzr log foo.c
1598
 
        bzr log -r -10.. http://server/branch
 
1611
    :Examples:
 
1612
        Log the current branch::
 
1613
 
 
1614
            bzr log
 
1615
 
 
1616
        Log a file::
 
1617
 
 
1618
            bzr log foo.c
 
1619
 
 
1620
        Log the last 10 revisions of a branch::
 
1621
 
 
1622
            bzr log -r -10.. http://server/branch
1599
1623
    """
1600
1624
 
1601
1625
    # TODO: Make --revision support uuid: and hash: [future tag:] notation.
1858
1882
 
1859
1883
    Ignore patterns specifying absolute paths are not allowed.
1860
1884
 
1861
 
    Ignore patterns may include globbing wildcards such as:
 
1885
    Ignore patterns may include globbing wildcards such as::
 
1886
 
1862
1887
      ? - Matches any single character except '/'
1863
1888
      * - Matches 0 or more characters except '/'
1864
1889
      /**/ - Matches 0 or more directories in a path
1872
1897
    Note: ignore patterns containing shell wildcards must be quoted from 
1873
1898
    the shell on Unix.
1874
1899
 
1875
 
    examples:
1876
 
        bzr ignore ./Makefile
1877
 
        bzr ignore '*.class'
1878
 
        bzr ignore 'lib/**/*.o'
1879
 
        bzr ignore 'RE:lib/.*\.o'
 
1900
    :Examples:
 
1901
        Ignore the top level Makefile::
 
1902
 
 
1903
            bzr ignore ./Makefile
 
1904
 
 
1905
        Ignore class files in all directories::
 
1906
 
 
1907
            bzr ignore '*.class'
 
1908
 
 
1909
        Ignore .o files under the lib directory::
 
1910
 
 
1911
            bzr ignore 'lib/**/*.o'
 
1912
 
 
1913
        Ignore .o files under the lib directory::
 
1914
 
 
1915
            bzr ignore 'RE:lib/.*\.o'
1880
1916
    """
1881
1917
 
1882
1918
    _see_also = ['status', 'ignored']
1956
1992
class cmd_lookup_revision(Command):
1957
1993
    """Lookup the revision-id from a revision-number
1958
1994
 
1959
 
    example:
 
1995
    :Examples:
1960
1996
        bzr lookup-revision 33
1961
1997
    """
1962
1998
    hidden = True
1990
2026
 
1991
2027
    Note: Export of tree with non-ASCII filenames to zip is not supported.
1992
2028
 
1993
 
     Supported formats       Autodetected by extension
1994
 
     -----------------       -------------------------
1995
 
         dir                            -
 
2029
      =================       =========================
 
2030
      Supported formats       Autodetected by extension
 
2031
      =================       =========================
 
2032
         dir                         (none)
1996
2033
         tar                          .tar
1997
2034
         tbz2                    .tar.bz2, .tbz2
1998
2035
         tgz                      .tar.gz, .tgz
1999
2036
         zip                          .zip
 
2037
      =================       =========================
2000
2038
    """
2001
2039
    takes_args = ['dest', 'branch?']
2002
2040
    takes_options = [
2312
2350
class cmd_whoami(Command):
2313
2351
    """Show or set bzr user id.
2314
2352
    
2315
 
    examples:
2316
 
        bzr whoami --email
2317
 
        bzr whoami 'Frank Chu <fchu@example.com>'
 
2353
    :Examples:
 
2354
        Show the email of the current user::
 
2355
 
 
2356
            bzr whoami --email
 
2357
 
 
2358
        Set the current user::
 
2359
 
 
2360
            bzr whoami 'Frank Chu <fchu@example.com>'
2318
2361
    """
2319
2362
    takes_options = [ Option('email',
2320
2363
                             help='Display email address only.'),
2409
2452
    Tests that need working space on disk use a common temporary directory, 
2410
2453
    typically inside $TMPDIR or /tmp.
2411
2454
 
2412
 
    examples::
2413
 
        bzr selftest ignore
2414
 
            run only tests relating to 'ignore'
2415
 
        bzr --no-plugins selftest -v
2416
 
            disable plugins and list tests as they're run
 
2455
    :Examples:
 
2456
        Run only tests relating to 'ignore'::
 
2457
 
 
2458
            bzr selftest ignore
 
2459
 
 
2460
        Disable plugins and list tests as they're run::
 
2461
 
 
2462
            bzr --no-plugins selftest -v
2417
2463
    """
2418
2464
    # NB: this is used from the class without creating an instance, which is
2419
2465
    # why it does not have a self parameter.
2464
2510
                            short_name='x',
2465
2511
                            help='Exclude tests that match this regular'
2466
2512
                                 ' expression.'),
 
2513
                     Option('strict', help='Fail on missing dependencies or '
 
2514
                            'known failures.'),
2467
2515
                     ]
2468
2516
    encoding_type = 'replace'
2469
2517
 
2471
2519
            transport=None, benchmark=None,
2472
2520
            lsprof_timed=None, cache_dir=None,
2473
2521
            first=False, list_only=False,
2474
 
            randomize=None, exclude=None):
 
2522
            randomize=None, exclude=None, strict=False):
2475
2523
        import bzrlib.ui
2476
2524
        from bzrlib.tests import selftest
2477
2525
        import bzrlib.benchmarks as benchmarks
2509
2557
                              matching_tests_first=first,
2510
2558
                              list_only=list_only,
2511
2559
                              random_seed=randomize,
2512
 
                              exclude_pattern=exclude
 
2560
                              exclude_pattern=exclude,
 
2561
                              strict=strict,
2513
2562
                              )
2514
2563
        finally:
2515
2564
            if benchfile is not None:
2591
2640
    The results of the merge are placed into the destination working
2592
2641
    directory, where they can be reviewed (with bzr diff), tested, and then
2593
2642
    committed to record the result of the merge.
2594
 
 
2595
 
    Examples:
2596
 
 
2597
 
    To merge the latest revision from bzr.dev:
2598
 
        bzr merge ../bzr.dev
2599
 
 
2600
 
    To merge changes up to and including revision 82 from bzr.dev:
2601
 
        bzr merge -r 82 ../bzr.dev
2602
 
 
2603
 
    To merge the changes introduced by 82, without previous changes:
2604
 
        bzr merge -r 81..82 ../bzr.dev
2605
2643
    
2606
2644
    merge refuses to run if there are any uncommitted changes, unless
2607
2645
    --force is given.
 
2646
 
 
2647
    :Examples:
 
2648
        To merge the latest revision from bzr.dev::
 
2649
 
 
2650
            bzr merge ../bzr.dev
 
2651
 
 
2652
        To merge changes up to and including revision 82 from bzr.dev::
 
2653
 
 
2654
            bzr merge -r 82 ../bzr.dev
 
2655
 
 
2656
        To merge the changes introduced by 82, without previous changes::
 
2657
 
 
2658
            bzr merge -r 81..82 ../bzr.dev
2608
2659
    """
2609
2660
 
2610
2661
    _see_also = ['update', 'remerge', 'status-flags']
2722
2773
        if (merger.show_base and
2723
2774
            not merger.merge_type is _mod_merge.Merge3Merger):
2724
2775
            raise errors.BzrCommandError("Show-base is not supported for this"
2725
 
                                         " merge type. %s" % merge_type)
 
2776
                                         " merge type. %s" % merger.merge_type)
2726
2777
        if merger.reprocess and not merger.merge_type.supports_reprocess:
2727
2778
            raise errors.BzrCommandError("Conflict reduction is not supported"
2728
 
                                         " for merge type %s." % merge_type)
 
2779
                                         " for merge type %s." %
 
2780
                                         merger.merge_type)
2729
2781
        if merger.reprocess and merger.show_base:
2730
2782
            raise errors.BzrCommandError("Cannot do conflict reduction and"
2731
2783
                                         " show base.")
2837
2889
    merge.  The difference is that remerge can (only) be run when there is a
2838
2890
    pending merge, and it lets you specify particular files.
2839
2891
 
2840
 
    Examples:
2841
 
 
2842
 
    $ bzr remerge --show-base
 
2892
    :Examples:
2843
2893
        Re-do the merge of all conflicted files, and show the base text in
2844
 
        conflict regions, in addition to the usual THIS and OTHER texts.
 
2894
        conflict regions, in addition to the usual THIS and OTHER texts::
 
2895
      
 
2896
            bzr remerge --show-base
2845
2897
 
2846
 
    $ bzr remerge --merge-type weave --reprocess foobar
2847
2898
        Re-do the merge of "foobar", using the weave merge algorithm, with
2848
 
        additional processing to reduce the size of conflict regions.
 
2899
        additional processing to reduce the size of conflict regions::
 
2900
      
 
2901
            bzr remerge --merge-type weave --reprocess foobar
2849
2902
    """
2850
2903
    takes_args = ['file*']
2851
2904
    takes_options = [
3447
3500
 
3448
3501
    You can get information on what locks are open via the 'bzr info' command.
3449
3502
    
3450
 
    example:
 
3503
    :Examples:
3451
3504
        bzr break-lock
3452
3505
    """
3453
3506
    takes_args = ['location?']
3644
3697
 
3645
3698
    hidden = True
3646
3699
 
3647
 
    _see_also = ['submit']
 
3700
    _see_also = ['send']
3648
3701
 
3649
3702
    takes_options = [
3650
3703
        RegistryOption.from_kwargs('patch-type',
3651
 
            'The type of patch to include in the directive',
 
3704
            'The type of patch to include in the directive.',
3652
3705
            title='Patch type',
3653
3706
            value_switches=True,
3654
3707
            enum_switch=False,
3727
3780
    """Create a merge-directive for submiting changes.
3728
3781
 
3729
3782
    A merge directive provides many things needed for requesting merges:
3730
 
    - A machine-readable description of the merge to perform
3731
 
    - An optional patch that is a preview of the changes requested
3732
 
    - An optional bundle of revision data, so that the changes can be applied
 
3783
 
 
3784
    * A machine-readable description of the merge to perform
 
3785
 
 
3786
    * An optional patch that is a preview of the changes requested
 
3787
 
 
3788
    * An optional bundle of revision data, so that the changes can be applied
3733
3789
      directly from the merge directive, without retrieving data from a
3734
3790
      branch.
3735
3791
 
3745
3801
    branch is used in the merge instructions.  This means that a local mirror
3746
3802
    can be used as your actual submit branch, once you have set public_branch
3747
3803
    for that mirror.
 
3804
 
 
3805
    Two formats are currently supported: "4" uses revision bundle format 4 and
 
3806
    merge directive format 2.  It is significantly faster and smaller than
 
3807
    older formats.  It is compatible with Bazaar 0.19 and later.  It is the
 
3808
    default.  "0.9" uses revision bundle format 0.9 and merge directive
 
3809
    format 1.  It is compatible with Bazaar 0.12 - 0.18.
3748
3810
    """
3749
3811
 
3750
3812
    encoding_type = 'exact'
3751
3813
 
3752
 
    aliases = ['bundle', 'bundle-revisions']
3753
 
 
3754
3814
    _see_also = ['merge']
3755
3815
 
3756
3816
    takes_args = ['submit_branch?', 'public_branch?']
3770
3830
        Option('output', short_name='o', help='Write directive to this file.',
3771
3831
               type=unicode),
3772
3832
        'revision',
 
3833
        RegistryOption.from_kwargs('format',
 
3834
        'Use the specified output format.',
 
3835
        **{'4': 'Bundle format 4, Merge Directive 2 (default)',
 
3836
           '0.9': 'Bundle format 0.9, Merge Directive 1',})
3773
3837
        ]
3774
3838
 
3775
3839
    def run(self, submit_branch=None, public_branch=None, no_bundle=False,
3776
3840
            no_patch=False, revision=None, remember=False, output=None,
3777
 
            **kwargs):
3778
 
        from bzrlib.revision import ensure_null, NULL_REVISION
 
3841
            format='4', **kwargs):
3779
3842
        if output is None:
3780
3843
            raise errors.BzrCommandError('File must be specified with'
3781
3844
                                         ' --output')
3782
 
        elif output == '-':
 
3845
        return self._run(submit_branch, revision, public_branch, remember,
 
3846
                         format, no_bundle, no_patch, output,
 
3847
                         kwargs.get('from', '.'))
 
3848
 
 
3849
    def _run(self, submit_branch, revision, public_branch, remember, format,
 
3850
             no_bundle, no_patch, output, from_,):
 
3851
        from bzrlib.revision import ensure_null, NULL_REVISION
 
3852
        if output == '-':
3783
3853
            outfile = self.outf
3784
3854
        else:
3785
3855
            outfile = open(output, 'wb')
3786
3856
        try:
3787
 
            from_ = kwargs.get('from', '.')
3788
3857
            branch = Branch.open_containing(from_)[0]
3789
3858
            if remember and submit_branch is None:
3790
3859
                raise errors.BzrCommandError(
3828
3897
            revision_id = ensure_null(revision_id)
3829
3898
            if revision_id == NULL_REVISION:
3830
3899
                raise errors.BzrCommandError('No revisions to submit.')
3831
 
            directive = merge_directive.MergeDirective2.from_objects(
3832
 
                branch.repository, revision_id, time.time(),
3833
 
                osutils.local_time_offset(), submit_branch,
3834
 
                public_branch=public_branch, include_patch=not no_patch,
3835
 
                include_bundle=not no_bundle, message=None,
3836
 
                base_revision_id=base_revision_id)
 
3900
            if format == '4':
 
3901
                directive = merge_directive.MergeDirective2.from_objects(
 
3902
                    branch.repository, revision_id, time.time(),
 
3903
                    osutils.local_time_offset(), submit_branch,
 
3904
                    public_branch=public_branch, include_patch=not no_patch,
 
3905
                    include_bundle=not no_bundle, message=None,
 
3906
                    base_revision_id=base_revision_id)
 
3907
            elif format == '0.9':
 
3908
                if not no_bundle:
 
3909
                    if not no_patch:
 
3910
                        patch_type = 'bundle'
 
3911
                    else:
 
3912
                        raise errors.BzrCommandError('Format 0.9 does not'
 
3913
                            ' permit bundle with no patch')
 
3914
                else:
 
3915
                    if not no_patch:
 
3916
                        patch_type = 'diff'
 
3917
                    else:
 
3918
                        patch_type = None
 
3919
                directive = merge_directive.MergeDirective.from_objects(
 
3920
                    branch.repository, revision_id, time.time(),
 
3921
                    osutils.local_time_offset(), submit_branch,
 
3922
                    public_branch=public_branch, patch_type=patch_type,
 
3923
                    message=None)
 
3924
 
3837
3925
            outfile.writelines(directive.to_lines())
3838
3926
        finally:
3839
3927
            if output != '-':
3840
3928
                outfile.close()
3841
3929
 
3842
3930
 
 
3931
class cmd_bundle_revisions(cmd_send):
 
3932
 
 
3933
    """Create a merge-directive for submiting changes.
 
3934
 
 
3935
    A merge directive provides many things needed for requesting merges:
 
3936
 
 
3937
    * A machine-readable description of the merge to perform
 
3938
 
 
3939
    * An optional patch that is a preview of the changes requested
 
3940
 
 
3941
    * An optional bundle of revision data, so that the changes can be applied
 
3942
      directly from the merge directive, without retrieving data from a
 
3943
      branch.
 
3944
 
 
3945
    If --no-bundle is specified, then public_branch is needed (and must be
 
3946
    up-to-date), so that the receiver can perform the merge using the
 
3947
    public_branch.  The public_branch is always included if known, so that
 
3948
    people can check it later.
 
3949
 
 
3950
    The submit branch defaults to the parent, but can be overridden.  Both
 
3951
    submit branch and public branch will be remembered if supplied.
 
3952
 
 
3953
    If a public_branch is known for the submit_branch, that public submit
 
3954
    branch is used in the merge instructions.  This means that a local mirror
 
3955
    can be used as your actual submit branch, once you have set public_branch
 
3956
    for that mirror.
 
3957
 
 
3958
    Two formats are currently supported: "4" uses revision bundle format 4 and
 
3959
    merge directive format 2.  It is significantly faster and smaller than
 
3960
    older formats.  It is compatible with Bazaar 0.19 and later.  It is the
 
3961
    default.  "0.9" uses revision bundle format 0.9 and merge directive
 
3962
    format 1.  It is compatible with Bazaar 0.12 - 0.18.
 
3963
    """
 
3964
 
 
3965
    aliases = ['bundle']
 
3966
 
 
3967
    _see_also = ['send', 'merge']
 
3968
 
 
3969
    hidden = True
 
3970
 
 
3971
    def run(self, submit_branch=None, public_branch=None, no_bundle=False,
 
3972
            no_patch=False, revision=None, remember=False, output=None,
 
3973
            format='4', **kwargs):
 
3974
        if output is None:
 
3975
            output = '-'
 
3976
        return self._run(submit_branch, revision, public_branch, remember,
 
3977
                         format, no_bundle, no_patch, output,
 
3978
                         kwargs.get('from', '.'))
 
3979
 
 
3980
 
3843
3981
class cmd_tag(Command):
3844
3982
    """Create, remove or modify a tag naming a revision.
3845
3983