~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: mbp at sourcefrog
  • Date: 2005-03-23 06:25:55 UTC
  • Revision ID: mbp@sourcefrog.net-20050323062555-5489339018d0c043
- import a subset of elementtree for easier installation

Show diffs side-by-side

added added

removed removed

Lines of Context:
165
165
    print Branch('.').revno()
166
166
    
167
167
 
 
168
    
168
169
def cmd_add(file_list, verbose=False):
169
 
    """Add specified files.
 
170
    """Add specified files or directories.
 
171
 
 
172
    In non-recursive mode, all the named items are added, regardless
 
173
    of whether they were previously ignored.  A warning is given if
 
174
    any of the named files are already versioned.
 
175
 
 
176
    In recursive mode (the default), files are treated the same way
 
177
    but the behaviour for directories is different.  Directories that
 
178
    are already versioned do not give a warning.  All directories,
 
179
    whether already versioned or not, are searched for files or
 
180
    subdirectories that are neither versioned or ignored, and these
 
181
    are added.  This search proceeds recursively into versioned
 
182
    directories.
 
183
 
 
184
    Therefore simply saying 'bzr add .' will version all files that
 
185
    are currently unknown.
 
186
    """
 
187
    if True:
 
188
        bzrlib.add.smart_add(file_list, verbose)
 
189
    else:
 
190
        # old way
 
191
        assert file_list
 
192
        b = Branch(file_list[0], find_root=True)
 
193
        b.add([b.relpath(f) for f in file_list], verbose=verbose)
 
194
 
170
195
    
171
 
    Fails if the files are already added.
172
 
    """
173
 
    Branch('.').add(file_list, verbose=verbose)
 
196
 
 
197
def cmd_relpath(filename):
 
198
    print Branch(filename).relpath(filename)
174
199
 
175
200
 
176
201
def cmd_inventory(revision=None):
243
268
 
244
269
 
245
270
def cmd_remove(file_list, verbose=False):
246
 
    Branch('.').remove(file_list, verbose=verbose)
 
271
    b = Branch(file_list[0])
 
272
    b.remove([b.relpath(f) for f in file_list], verbose=verbose)
247
273
 
248
274
 
249
275
 
250
276
def cmd_file_id(filename):
251
 
    i = Branch('.').read_working_inventory().path2id(filename)
 
277
    b = Branch(filename)
 
278
    i = b.inventory.path2id(b.relpath(filename))
252
279
    if i is None:
253
280
        bailout("%s is not a versioned file" % filename)
254
281
    else:
368
395
 
369
396
 
370
397
 
 
398
def cmd_root(filename=None):
 
399
    """Print the branch root."""
 
400
    print bzrlib.branch.find_branch_root(filename)
 
401
    
 
402
 
371
403
def cmd_log(timezone='original'):
372
404
    """Show log of this branch.
373
405
 
434
466
 
435
467
def cmd_uuid():
436
468
    """Print a newly-generated UUID."""
437
 
    print uuid()
 
469
    print bzrlib.osutils.uuid()
438
470
 
439
471
 
440
472
 
443
475
 
444
476
 
445
477
 
446
 
def cmd_commit(message, verbose=False):
 
478
def cmd_commit(message=None, verbose=False):
 
479
    if not message:
 
480
        bailout("please specify a commit message")
447
481
    Branch('.').commit(message, verbose=verbose)
448
482
 
449
483
 
480
514
    print bzrlib.branch._gen_revision_id(time.time())
481
515
 
482
516
 
483
 
def cmd_doctest():
484
 
    """Run internal doctest suite"""
 
517
def cmd_selftest(verbose=False):
 
518
    """Run internal test suite"""
485
519
    ## -v, if present, is seen by doctest; the argument is just here
486
520
    ## so our parser doesn't complain
487
521
 
488
522
    ## TODO: --verbose option
 
523
 
 
524
    failures, tests = 0, 0
489
525
    
490
 
    import doctest, bzrlib.store
 
526
    import doctest, bzrlib.store, bzrlib.tests
491
527
    bzrlib.trace.verbose = False
492
 
    doctest.testmod(bzrlib.store)
493
 
    doctest.testmod(bzrlib.inventory)
494
 
    doctest.testmod(bzrlib.branch)
495
 
    doctest.testmod(bzrlib.osutils)
496
 
    doctest.testmod(bzrlib.tree)
497
 
 
498
 
    # more strenuous tests;
499
 
    import bzrlib.tests
500
 
    doctest.testmod(bzrlib.tests)
501
 
 
502
 
 
503
 
cmd_selftest = cmd_doctest
 
528
 
 
529
    for m in bzrlib.store, bzrlib.inventory, bzrlib.branch, bzrlib.osutils, \
 
530
        bzrlib.tree, bzrlib.tests, bzrlib.commands, bzrlib.add:
 
531
        mf, mt = doctest.testmod(m)
 
532
        failures += mf
 
533
        tests += mt
 
534
        print '%-40s %3d tests' % (m.__name__, mt),
 
535
        if mf:
 
536
            print '%3d FAILED!' % mf
 
537
        else:
 
538
            print
 
539
 
 
540
    print '%-40s %3d tests' % ('total', tests),
 
541
    if failures:
 
542
        print '%3d FAILED!' % failures
 
543
    else:
 
544
        print
 
545
 
 
546
 
 
547
 
 
548
# deprecated
 
549
cmd_doctest = cmd_selftest
504
550
 
505
551
 
506
552
######################################################################
573
619
    'commit':                 [],
574
620
    'diff':                   [],
575
621
    'file-id':                ['filename'],
 
622
    'root':                   ['filename?'],
 
623
    'relpath':                ['filename'],
576
624
    'get-file-text':          ['text_id'],
577
625
    'get-inventory':          ['inventory_id'],
578
626
    'get-revision':           ['revision_id'],
667
715
    # TODO: Need a way to express 'cp SRC... DEST', where it matches
668
716
    # all but one.
669
717
 
 
718
    # step through args and argform, allowing appropriate 0-many matches
670
719
    for ap in argform:
671
720
        argname = ap[:-1]
672
721
        if ap[-1] == '?':
673
 
            assert 0
 
722
            if args:
 
723
                argdict[argname] = args.pop(0)
674
724
        elif ap[-1] == '*':
675
725
            assert 0
676
726
        elif ap[-1] == '+':
747
797
    ## TODO: If the arguments are wrong, give a usage message rather
748
798
    ## than just a backtrace.
749
799
 
 
800
    bzrlib.trace.create_tracefile(argv)
 
801
    
750
802
    try:
751
 
        # TODO: Lift into separate function in trace.py
752
 
        # TODO: Also show contents of /etc/lsb-release, if it can be parsed.
753
 
        #       Perhaps that should eventually go into the platform library?
754
 
        # TODO: If the file doesn't exist, add a note describing it.
755
 
        t = bzrlib.trace._tracefile
756
 
        t.write('-' * 60 + '\n')
757
 
        t.write('bzr invoked at %s\n' % format_date(time.time()))
758
 
        t.write('  by %s on %s\n' % (bzrlib.osutils.username(), socket.getfqdn()))
759
 
        t.write('  arguments: %r\n' % argv)
760
 
 
761
 
        starttime = os.times()[4]
762
 
 
763
 
        import platform
764
 
        t.write('  platform: %s\n' % platform.platform())
765
 
        t.write('  python: %s\n' % platform.python_version())
766
 
 
767
803
        ret = run_bzr(argv)
768
 
        
769
 
        times = os.times()
770
 
        mutter("finished, %.3fu/%.3fs cpu, %.3fu/%.3fs cum"
771
 
               % times[:4])
772
 
        mutter("    %.3f elapsed" % (times[4] - starttime))
773
 
 
774
804
        return ret
775
805
    except BzrError, e:
776
806
        log_error('bzr: error: ' + e.args[0] + '\n')