~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Aaron Bentley
  • Date: 2006-02-22 14:39:42 UTC
  • mto: (2027.1.2 revert-subpath-56549)
  • mto: This revision was merged to the branch mainline in revision 1570.
  • Revision ID: abentley@panoramicfeedback.com-20060222143942-ae72299f2de66767
Fixed build_tree with symlinks

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 = {}
168
167
        List of argument forms, marked with whether they are optional,
169
168
        repeated, etc.
170
169
 
171
 
                Examples:
172
 
 
173
 
                ['to_location', 'from_branch?', 'file*']
174
 
 
175
 
                'to_location' is required
176
 
                'from_branch' is optional
177
 
                'file' can be specified 0 or more times
 
170
                Examples:
 
171
 
 
172
                ['to_location', 'from_branch?', 'file*']
 
173
 
 
174
                'to_location' is required
 
175
                'from_branch' is optional
 
176
                'file' can be specified 0 or more times
178
177
 
179
178
    takes_options
180
179
        List of options that may be given for this command.  These can
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:
520
533
    if not opt_no_plugins:
521
534
        from bzrlib.plugin import load_plugins
522
535
        load_plugins()
 
536
    else:
 
537
        from bzrlib.plugin import disable_plugins
 
538
        disable_plugins()
523
539
 
524
540
    cmd = str(argv.pop(0))
525
541
 
527
543
 
528
544
    try:
529
545
        if opt_lsprof:
530
 
            ret = apply_lsprofiled(cmd_obj.run_argv, argv)
 
546
            ret = apply_lsprofiled(opt_lsprof_file, cmd_obj.run_argv, argv)
531
547
        elif opt_profile:
532
548
            ret = apply_profiled(cmd_obj.run_argv, argv)
533
549
        else: