~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Martin Pool
  • Date: 2006-02-22 04:29:54 UTC
  • mfrom: (1566 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1569.
  • Revision ID: mbp@sourcefrog.net-20060222042954-60333f08dd56a646
[merge] from bzr.dev before integration
Fix undefined ordering in sign_my_revisions breaking tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
                           BzrOptionError,
43
43
                           NotBranchError)
44
44
from bzrlib.revisionspec import RevisionSpec
45
 
from bzrlib import BZRDIR
46
45
from bzrlib.option import Option
47
46
 
48
47
plugin_cmds = {}
447
446
        os.remove(pfname)
448
447
 
449
448
 
450
 
def apply_lsprofiled(the_callable, *args, **kwargs):
 
449
def apply_lsprofiled(filename, the_callable, *args, **kwargs):
451
450
    from bzrlib.lsprof import profile
452
 
    ret,stats = profile(the_callable,*args,**kwargs)
 
451
    import cPickle
 
452
    ret, stats = profile(the_callable, *args, **kwargs)
453
453
    stats.sort()
454
 
    stats.pprint()
 
454
    if filename is None:
 
455
        stats.pprint()
 
456
    else:
 
457
        stats.freeze()
 
458
        cPickle.dump(stats, open(filename, 'w'), 2)
 
459
        print 'Profile data written to %r.' % filename
455
460
    return ret
456
461
 
457
462
def run_bzr(argv):
484
489
    argv = [a.decode(bzrlib.user_encoding) for a in argv]
485
490
 
486
491
    opt_lsprof = opt_profile = opt_no_plugins = opt_builtin = False
 
492
    opt_lsprof_file = None
487
493
 
488
494
    # --no-plugins is handled specially at a very early stage. We need
489
495
    # to load plugins before doing other command parsing so that they
490
496
    # can override commands, but this needs to happen first.
491
497
 
492
 
    for a in argv:
 
498
    argv_copy = []
 
499
    i = 0
 
500
    while i < len(argv):
 
501
        a = argv[i]
493
502
        if a == '--profile':
494
503
            opt_profile = True
495
504
        elif a == '--lsprof':
496
505
            opt_lsprof = True
 
506
        elif a == '--lsprof-file':
 
507
            opt_lsprof_file = argv[i + 1]
 
508
            i += 1
497
509
        elif a == '--no-plugins':
498
510
            opt_no_plugins = True
499
511
        elif a == '--builtin':
501
513
        elif a in ('--quiet', '-q'):
502
514
            be_quiet()
503
515
        else:
504
 
            continue
505
 
        argv.remove(a)
 
516
            argv_copy.append(a)
 
517
        i += 1
506
518
 
 
519
    argv = argv_copy
507
520
    if (not argv) or (argv[0] == '--help'):
508
521
        from bzrlib.help import help
509
522
        if len(argv) > 1:
530
543
 
531
544
    try:
532
545
        if opt_lsprof:
533
 
            ret = apply_lsprofiled(cmd_obj.run_argv, argv)
 
546
            ret = apply_lsprofiled(opt_lsprof_file, cmd_obj.run_argv, argv)
534
547
        elif opt_profile:
535
548
            ret = apply_profiled(cmd_obj.run_argv, argv)
536
549
        else: