~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

[merge] jam-integration 1527, including branch-formats, help text, misc bug fixes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
from bzrlib.errors import (BzrError, BzrCheckError, BzrCommandError, 
32
32
                           NotBranchError, DivergedBranches, NotConflicted,
33
33
                           NoSuchFile, NoWorkingTree, FileInWrongBranch)
 
34
from bzrlib.log import show_one_log
34
35
from bzrlib.option import Option
35
36
from bzrlib.revisionspec import RevisionSpec
36
37
import bzrlib.trace
37
38
from bzrlib.trace import mutter, note, log_error, warning, is_quiet
 
39
from bzrlib.transport.local import LocalTransport
38
40
from bzrlib.workingtree import WorkingTree
39
 
from bzrlib.log import show_one_log
40
41
 
41
42
 
42
43
def tree_files(file_list, default_branch=u'.'):
516
517
                        if new_transport.base == transport.base:
517
518
                            raise BzrCommandError("Could not creeate "
518
519
                                                  "path prefix.")
519
 
            br_to = Branch.initialize(location)
 
520
            if isinstance(transport, LocalTransport):
 
521
                br_to = WorkingTree.create_standalone(location).branch
 
522
            else:
 
523
                br_to = Branch.create(location)
520
524
        old_rh = br_to.revision_history()
521
525
        try:
522
526
            try:
731
735
        tree = WorkingTree.open_containing(u'.')[0]
732
736
        b = tree.branch
733
737
        # FIXME. should be tree.last_revision
734
 
        for revision_id in b.get_ancestry(b.last_revision()):
 
738
        for revision_id in b.repository.get_ancestry(b.last_revision()):
735
739
            if revision_id is None:
736
740
                continue
737
741
            self.outf.write(revision_id)
764
768
            # locations if the user supplies an extended path
765
769
            if not os.path.exists(location):
766
770
                os.mkdir(location)
767
 
        Branch.initialize(location)
 
771
        WorkingTree.create_standalone(location)
768
772
 
769
773
 
770
774
class cmd_diff(Command):
974
978
            rev1 = rev2 = revision[0].in_history(b).revno
975
979
        elif len(revision) == 2:
976
980
            rev1 = revision[0].in_history(b).revno
977
 
            rev2 = revision[1].in_history(b).revno
 
981
            if revision[1].spec is None:
 
982
                # missing end-range means last known revision
 
983
                rev2 = b.revno()
 
984
            else:
 
985
                rev2 = revision[1].in_history(b).revno
978
986
        else:
979
987
            raise BzrCommandError('bzr log --revision takes one or two values.')
980
988
 
1202
1210
 
1203
1211
    Note: export of tree with non-ascii filenames to zip is not supported.
1204
1212
 
1205
 
    Supported formats       Autodetected by extension
1206
 
    -----------------       -------------------------
 
1213
     Supported formats       Autodetected by extension
 
1214
     -----------------       -------------------------
1207
1215
         dir                            -
1208
1216
         tar                          .tar
1209
1217
         tbz2                    .tar.bz2, .tbz2
1394
1402
    """Upgrade branch storage to current format.
1395
1403
 
1396
1404
    The check command or bzr developers may sometimes advise you to run
1397
 
    this command.
1398
 
 
1399
 
    This version of this command upgrades from the full-text storage
1400
 
    used by bzr 0.0.8 and earlier to the weave format (v5).
 
1405
    this command. When the default format has changed you may also be warned
 
1406
    during other operations to upgrade.
1401
1407
    """
1402
 
    takes_args = ['dir?']
 
1408
    takes_args = ['url?']
1403
1409
 
1404
 
    def run(self, dir=u'.'):
 
1410
    def run(self, url='.'):
1405
1411
        from bzrlib.upgrade import upgrade
1406
 
        upgrade(dir)
 
1412
        upgrade(url)
1407
1413
 
1408
1414
 
1409
1415
class cmd_whoami(Command):
1423
1429
        else:
1424
1430
            print config.username()
1425
1431
 
 
1432
 
1426
1433
class cmd_nick(Command):
1427
 
    """\
1428
 
    Print or set the branch nickname.  
 
1434
    """Print or set the branch nickname.  
 
1435
 
1429
1436
    If unset, the tree root directory name is used as the nickname
1430
1437
    To print the current nickname, execute with no argument.  
1431
1438
    """
1441
1448
    def printme(self, branch):
1442
1449
        print branch.nick 
1443
1450
 
 
1451
 
1444
1452
class cmd_selftest(Command):
1445
1453
    """Run internal test suite.
1446
1454
    
1451
1459
    
1452
1460
    If arguments are given, they are regular expressions that say
1453
1461
    which tests should run.
 
1462
 
 
1463
    If the global option '--no-plugins' is given, plugins are not loaded
 
1464
    before running the selftests.  This has two effects: features provided or
 
1465
    modified by plugins will not be tested, and tests provided by plugins will
 
1466
    not be run.
 
1467
 
 
1468
    examples:
 
1469
        bzr selftest ignore
 
1470
        bzr --no-plugins selftest -v
1454
1471
    """
1455
1472
    # TODO: --list should give a list of all available tests
 
1473
 
 
1474
    # NB: this is used from the class without creating an instance, which is
 
1475
    # why it does not have a self parameter.
 
1476
    def get_transport_type(typestring):
 
1477
        """Parse and return a transport specifier."""
 
1478
        if typestring == "sftp":
 
1479
            from bzrlib.transport.sftp import SFTPAbsoluteServer
 
1480
            return SFTPAbsoluteServer
 
1481
        if typestring == "memory":
 
1482
            from bzrlib.transport.memory import MemoryServer
 
1483
            return MemoryServer
 
1484
        msg = "No known transport type %s. Supported types are: sftp\n" %\
 
1485
            (typestring)
 
1486
        raise BzrCommandError(msg)
 
1487
 
1456
1488
    hidden = True
1457
1489
    takes_args = ['testspecs*']
1458
 
    takes_options = ['verbose', 
 
1490
    takes_options = ['verbose',
1459
1491
                     Option('one', help='stop when one test fails'),
1460
1492
                     Option('keep-output', 
1461
 
                            help='keep output directories when tests fail')
 
1493
                            help='keep output directories when tests fail'),
 
1494
                     Option('transport', 
 
1495
                            help='Use a different transport by default '
 
1496
                                 'throughout the test suite.',
 
1497
                            type=get_transport_type),
1462
1498
                    ]
1463
1499
 
1464
1500
    def run(self, testspecs_list=None, verbose=False, one=False,
1465
 
            keep_output=False):
 
1501
            keep_output=False, transport=None):
1466
1502
        import bzrlib.ui
1467
1503
        from bzrlib.tests import selftest
1468
1504
        # we don't want progress meters from the tests to go to the
1479
1515
            result = selftest(verbose=verbose, 
1480
1516
                              pattern=pattern,
1481
1517
                              stop_on_failure=one, 
1482
 
                              keep_output=keep_output)
 
1518
                              keep_output=keep_output,
 
1519
                              transport=transport)
1483
1520
            if result:
1484
1521
                bzrlib.trace.info('tests passed')
1485
1522
            else:
1557
1594
        last1 = branch1.last_revision()
1558
1595
        last2 = branch2.last_revision()
1559
1596
 
1560
 
        source = MultipleRevisionSources(branch1, branch2)
 
1597
        source = MultipleRevisionSources(branch1.repository, 
 
1598
                                         branch2.repository)
1561
1599
        
1562
1600
        base_rev_id = common_ancestor(last1, last2, source)
1563
1601
 
2079
2117
    from bzrlib.merge import Merger, _MergeConflictHandler
2080
2118
    if this_dir is None:
2081
2119
        this_dir = u'.'
2082
 
    this_branch = Branch.open_containing(this_dir)[0]
 
2120
    this_tree = WorkingTree.open_containing(this_dir)[0]
2083
2121
    if show_base and not merge_type is ApplyMerge3:
2084
2122
        raise BzrCommandError("Show-base is not supported for this merge"
2085
2123
                              " type. %s" % merge_type)
2088
2126
                              " type. %s" % merge_type)
2089
2127
    if reprocess and show_base:
2090
2128
        raise BzrCommandError("Cannot reprocess and show base.")
2091
 
    merger = Merger(this_branch)
 
2129
    merger = Merger(this_tree.branch, this_tree=this_tree)
2092
2130
    merger.check_basis(check_clean)
2093
2131
    merger.set_other(other_revision)
2094
2132
    merger.set_base(base_revision)