~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-08-18 01:29:12 UTC
  • mfrom: (5377.3.1 trivial)
  • Revision ID: pqm@pqm.ubuntu.com-20100818012912-wwgerzeui5ldf5lh
(mbp) slightly better error handling in ftp transport (Martin Pool)

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
    bzrdir,
33
33
    directory_service,
34
34
    delta,
35
 
    config as _mod_config,
 
35
    config,
36
36
    errors,
37
37
    globbing,
38
38
    hooks,
1354
1354
    If you want to discard your local changes, you can just do a
1355
1355
    'bzr revert' instead of 'bzr commit' after the update.
1356
1356
 
1357
 
    If you want to restore a file that has been removed locally, use
1358
 
    'bzr revert' instead of 'bzr update'.
1359
 
 
1360
1357
    If the tree's branch is bound to a master branch, it will also update
1361
1358
    the branch from the master.
1362
1359
    """
1480
1477
class cmd_remove(Command):
1481
1478
    __doc__ = """Remove files or directories.
1482
1479
 
1483
 
    This makes Bazaar stop tracking changes to the specified files. Bazaar will
1484
 
    delete them if they can easily be recovered using revert otherwise they
1485
 
    will be backed up (adding an extention of the form .~#~). If no options or
1486
 
    parameters are given Bazaar will scan for files that are being tracked by
1487
 
    Bazaar but missing in your tree and stop tracking them for you.
 
1480
    This makes bzr stop tracking changes to the specified files. bzr will delete
 
1481
    them if they can easily be recovered using revert. If no options or
 
1482
    parameters are given bzr will scan for files that are being tracked by bzr
 
1483
    but missing in your tree and stop tracking them for you.
1488
1484
    """
1489
1485
    takes_args = ['file*']
1490
1486
    takes_options = ['verbose',
1492
1488
        RegistryOption.from_kwargs('file-deletion-strategy',
1493
1489
            'The file deletion mode to be used.',
1494
1490
            title='Deletion Strategy', value_switches=True, enum_switch=False,
1495
 
            safe='Backup changed files (default).',
 
1491
            safe='Only delete files if they can be'
 
1492
                 ' safely recovered (default).',
1496
1493
            keep='Delete from bzr but leave the working copy.',
1497
1494
            force='Delete all the specified files, even if they can not be '
1498
1495
                'recovered and even if they are non-empty directories.')]
1887
1884
        Same as 'bzr diff' but prefix paths with old/ and new/::
1888
1885
 
1889
1886
            bzr diff --prefix old/:new/
1890
 
            
1891
 
        Show the differences using a custom diff program with options::
1892
 
        
1893
 
            bzr diff --using /usr/bin/diff --diff-options -wu
1894
1887
    """
1895
1888
    _see_also = ['status']
1896
1889
    takes_args = ['file*']
1897
1890
    takes_options = [
1898
1891
        Option('diff-options', type=str,
1899
 
               help='Pass these options to the external diff program.'),
 
1892
               help='Pass these options to the diff program.'),
1900
1893
        Option('prefix', type=str,
1901
1894
               short_name='p',
1902
1895
               help='Set prefixes added to old and new filenames, as '
1943
1936
                '--prefix expects two values separated by a colon'
1944
1937
                ' (eg "old/:new/")')
1945
1938
 
 
1939
        if using is not None and diff_options is not None:
 
1940
            raise errors.BzrCommandError(
 
1941
            '--diff-options and --using are mutually exclusive.')
 
1942
 
1946
1943
        if revision and len(revision) > 2:
1947
1944
            raise errors.BzrCommandError('bzr diff --revision takes exactly'
1948
1945
                                         ' one or two revision specifiers')
3325
3322
                try:
3326
3323
                    c = Branch.open_containing(u'.')[0].get_config()
3327
3324
                except errors.NotBranchError:
3328
 
                    c = _mod_config.GlobalConfig()
 
3325
                    c = config.GlobalConfig()
3329
3326
            else:
3330
3327
                c = Branch.open(directory).get_config()
3331
3328
            if email:
3336
3333
 
3337
3334
        # display a warning if an email address isn't included in the given name.
3338
3335
        try:
3339
 
            _mod_config.extract_email_address(name)
 
3336
            config.extract_email_address(name)
3340
3337
        except errors.NoEmailInUsername, e:
3341
3338
            warning('"%s" does not seem to contain an email address.  '
3342
3339
                    'This is allowed, but not recommended.', name)
3348
3345
            else:
3349
3346
                c = Branch.open(directory).get_config()
3350
3347
        else:
3351
 
            c = _mod_config.GlobalConfig()
 
3348
            c = config.GlobalConfig()
3352
3349
        c.set_user_option('email', name)
3353
3350
 
3354
3351
 
3421
3418
                'bzr alias --remove expects an alias to remove.')
3422
3419
        # If alias is not found, print something like:
3423
3420
        # unalias: foo: not found
3424
 
        c = _mod_config.GlobalConfig()
 
3421
        c = config.GlobalConfig()
3425
3422
        c.unset_alias(alias_name)
3426
3423
 
3427
3424
    @display_command
3428
3425
    def print_aliases(self):
3429
3426
        """Print out the defined aliases in a similar format to bash."""
3430
 
        aliases = _mod_config.GlobalConfig().get_aliases()
 
3427
        aliases = config.GlobalConfig().get_aliases()
3431
3428
        for key, value in sorted(aliases.iteritems()):
3432
3429
            self.outf.write('bzr alias %s="%s"\n' % (key, value))
3433
3430
 
3443
3440
 
3444
3441
    def set_alias(self, alias_name, alias_command):
3445
3442
        """Save the alias in the global config."""
3446
 
        c = _mod_config.GlobalConfig()
 
3443
        c = config.GlobalConfig()
3447
3444
        c.set_alias(alias_name, alias_command)
3448
3445
 
3449
3446
 
3484
3481
    If you set BZR_TEST_PDB=1 when running selftest, failing tests will drop
3485
3482
    into a pdb postmortem session.
3486
3483
 
3487
 
    The --coverage=DIRNAME global option produces a report with covered code
3488
 
    indicated.
3489
 
 
3490
3484
    :Examples:
3491
3485
        Run only tests relating to 'ignore'::
3492
3486
 
3576
3570
            randomize=None, exclude=None, strict=False,
3577
3571
            load_list=None, debugflag=None, starting_with=None, subunit=False,
3578
3572
            parallel=None, lsprof_tests=False):
3579
 
        from bzrlib import tests
 
3573
        from bzrlib.tests import selftest
 
3574
 
 
3575
        # Make deprecation warnings visible, unless -Werror is set
 
3576
        symbol_versioning.activate_deprecation_warnings(override=False)
3580
3577
 
3581
3578
        if testspecs_list is not None:
3582
3579
            pattern = '|'.join(testspecs_list)
3623
3620
                          "starting_with": starting_with
3624
3621
                          }
3625
3622
        selftest_kwargs.update(self.additional_selftest_args)
3626
 
 
3627
 
        # Make deprecation warnings visible, unless -Werror is set
3628
 
        cleanup = symbol_versioning.activate_deprecation_warnings(
3629
 
            override=False)
3630
 
        try:
3631
 
            result = tests.selftest(**selftest_kwargs)
3632
 
        finally:
3633
 
            cleanup()
 
3623
        result = selftest(**selftest_kwargs)
3634
3624
        return int(not result)
3635
3625
 
3636
3626
 
4804
4794
            self.outf.write('The above revision(s) will be removed.\n')
4805
4795
 
4806
4796
        if not force:
4807
 
            if not ui.ui_factory.confirm_action(
4808
 
                    'Uncommit these revisions',
4809
 
                    'bzrlib.builtins.uncommit',
4810
 
                    {}):
4811
 
                self.outf.write('Canceled\n')
 
4797
            if not ui.ui_factory.get_boolean('Are you sure'):
 
4798
                self.outf.write('Canceled')
4812
4799
                return 0
4813
4800
 
4814
4801
        mutter('Uncommitting from {%s} to {%s}',
4820
4807
 
4821
4808
 
4822
4809
class cmd_break_lock(Command):
4823
 
    __doc__ = """Break a dead lock.
4824
 
 
4825
 
    This command breaks a lock on a repository, branch, working directory or
4826
 
    config file.
 
4810
    __doc__ = """Break a dead lock on a repository, branch or working directory.
4827
4811
 
4828
4812
    CAUTION: Locks should only be broken when you are sure that the process
4829
4813
    holding the lock has been stopped.
4834
4818
    :Examples:
4835
4819
        bzr break-lock
4836
4820
        bzr break-lock bzr+ssh://example.com/bzr/foo
4837
 
        bzr break-lock --conf ~/.bazaar
4838
4821
    """
4839
 
 
4840
4822
    takes_args = ['location?']
4841
 
    takes_options = [
4842
 
        Option('config',
4843
 
               help='LOCATION is the directory where the config lock is.'),
4844
 
        Option('force',
4845
 
            help='Do not ask for confirmation before breaking the lock.'),
4846
 
        ]
4847
4823
 
4848
 
    def run(self, location=None, config=False, force=False):
 
4824
    def run(self, location=None, show=False):
4849
4825
        if location is None:
4850
4826
            location = u'.'
4851
 
        if force:
4852
 
            ui.ui_factory = ui.ConfirmationUserInterfacePolicy(ui.ui_factory,
4853
 
                None,
4854
 
                {'bzrlib.lockdir.break': True})
4855
 
        if config:
4856
 
            conf = _mod_config.LockableConfig(file_name=location)
4857
 
            conf.break_lock()
4858
 
        else:
4859
 
            control, relpath = bzrdir.BzrDir.open_containing(location)
4860
 
            try:
4861
 
                control.break_lock()
4862
 
            except NotImplementedError:
4863
 
                pass
 
4827
        control, relpath = bzrdir.BzrDir.open_containing(location)
 
4828
        try:
 
4829
            control.break_lock()
 
4830
        except NotImplementedError:
 
4831
            pass
4864
4832
 
4865
4833
 
4866
4834
class cmd_wait_until_signalled(Command):
4951
4919
    not part of it.  (Such trees can be produced by "bzr split", but also by
4952
4920
    running "bzr branch" with the target inside a tree.)
4953
4921
 
4954
 
    The result is a combined tree, with the subtree no longer an independent
 
4922
    The result is a combined tree, with the subtree no longer an independant
4955
4923
    part.  This is marked as a merge of the subtree into the containing tree,
4956
4924
    and all history is preserved.
4957
4925
    """