~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.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:
169
169
        List of argument forms, marked with whether they are optional,
170
170
        repeated, etc.
171
171
 
172
 
                Examples:
173
 
 
174
 
                ['to_location', 'from_branch?', 'file*']
175
 
 
176
 
                'to_location' is required
177
 
                'from_branch' is optional
178
 
                'file' can be specified 0 or more times
 
172
                Examples:
 
173
 
 
174
                ['to_location', 'from_branch?', 'file*']
 
175
 
 
176
                'to_location' is required
 
177
                'from_branch' is optional
 
178
                'file' can be specified 0 or more times
179
179
 
180
180
    takes_options
181
181
        List of options that may be given for this command.  These can
482
482
        os.remove(pfname)
483
483
 
484
484
 
485
 
def apply_lsprofiled(the_callable, *args, **kwargs):
 
485
def apply_lsprofiled(filename, the_callable, *args, **kwargs):
486
486
    from bzrlib.lsprof import profile
487
 
    ret,stats = profile(the_callable,*args,**kwargs)
 
487
    import cPickle
 
488
    ret, stats = profile(the_callable, *args, **kwargs)
488
489
    stats.sort()
489
 
    stats.pprint()
 
490
    if filename is None:
 
491
        stats.pprint()
 
492
    else:
 
493
        stats.freeze()
 
494
        cPickle.dump(stats, open(filename, 'w'), 2)
 
495
        print 'Profile data written to %r.' % filename
490
496
    return ret
491
497
 
492
498
def run_bzr(argv):
521
527
    argv = list(argv)
522
528
 
523
529
    opt_lsprof = opt_profile = opt_no_plugins = opt_builtin = False
 
530
    opt_lsprof_file = None
524
531
 
525
532
    # --no-plugins is handled specially at a very early stage. We need
526
533
    # to load plugins before doing other command parsing so that they
527
534
    # can override commands, but this needs to happen first.
528
535
 
529
 
    for a in argv:
 
536
    argv_copy = []
 
537
    i = 0
 
538
    while i < len(argv):
 
539
        a = argv[i]
530
540
        if a == '--profile':
531
541
            opt_profile = True
532
542
        elif a == '--lsprof':
533
543
            opt_lsprof = True
 
544
        elif a == '--lsprof-file':
 
545
            opt_lsprof_file = argv[i + 1]
 
546
            i += 1
534
547
        elif a == '--no-plugins':
535
548
            opt_no_plugins = True
536
549
        elif a == '--builtin':
538
551
        elif a in ('--quiet', '-q'):
539
552
            be_quiet()
540
553
        else:
541
 
            continue
542
 
        argv.remove(a)
 
554
            argv_copy.append(a)
 
555
        i += 1
543
556
 
 
557
    argv = argv_copy
544
558
    if (not argv) or (argv[0] == '--help'):
545
559
        from bzrlib.help import help
546
560
        if len(argv) > 1:
557
571
    if not opt_no_plugins:
558
572
        from bzrlib.plugin import load_plugins
559
573
        load_plugins()
 
574
    else:
 
575
        from bzrlib.plugin import disable_plugins
 
576
        disable_plugins()
560
577
 
561
578
    cmd = str(argv.pop(0))
562
579
 
564
581
 
565
582
    try:
566
583
        if opt_lsprof:
567
 
            ret = apply_lsprofiled(cmd_obj.run_argv, argv)
 
584
            ret = apply_lsprofiled(opt_lsprof_file, cmd_obj.run_argv, argv)
568
585
        elif opt_profile:
569
586
            ret = apply_profiled(cmd_obj.run_argv, argv)
570
587
        else: