comparison mercurial/commands.py @ 249:619e775aa7f9

import and startup cleanups -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 import and startup cleanups add commands:run() add copyright notice to commands eliminate/reorganize imports to speed up start time: 0.5b: $ time bash -c 'for i in `seq 100`; do ~/bin/hg > /dev/null; done' real 0m7.718s user 0m6.719s sys 0m0.794s new: $ time bash -c 'for i in `seq 100`; do hg > /dev/null; done' real 0m2.171s user 0m1.684s sys 0m0.444s just python: $ time bash -c 'for i in `seq 100`; do python -c pass; done' real 0m0.988s user 0m0.771s sys 0m0.207s Ignoring the fixed cost of loading the Python interpreter, we're 5.6 times faster. With the Python load time, we're still 3.5 times faster. manifest hash: acce5882a55c76eb165316f5741724c8ce4ef587 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCoihAywK+sNU5EO8RAqMdAJwMe6Ur0R9G6jjayNa5hH2C3c4k/gCeIYvc N178vaWWGciX9zq+g5qCAls= =buhv -----END PGP SIGNATURE-----
author mpm@selenic.com
date Sat, 04 Jun 2005 14:16:32 -0800
parents b7645b3c86ff
children 45ee7c4cae4f
comparison
equal deleted inserted replaced
248:b7645b3c86ff 249:619e775aa7f9
1 import os, re, traceback, sys, signal, time, mdiff 1 # commands.py - command processing for mercurial
2 #
3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
4 #
5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference.
7
8 import os, re, sys, signal, time, mdiff
2 from mercurial import fancyopts, ui, hg 9 from mercurial import fancyopts, ui, hg
3 10
4 class UnknownCommand(Exception): pass 11 class UnknownCommand(Exception): pass
5 12
6 def filterfiles(filters, files): 13 def filterfiles(filters, files):
520 class SignalInterrupt(Exception): pass 527 class SignalInterrupt(Exception): pass
521 528
522 def catchterm(*args): 529 def catchterm(*args):
523 raise SignalInterrupt 530 raise SignalInterrupt
524 531
532 def run():
533 sys.exit(dispatch(sys.argv[1:]))
534
525 def dispatch(args): 535 def dispatch(args):
526 options = {} 536 options = {}
527 opts = [('v', 'verbose', None, 'verbose'), 537 opts = [('v', 'verbose', None, 'verbose'),
528 ('d', 'debug', None, 'debug'), 538 ('d', 'debug', None, 'debug'),
529 ('q', 'quiet', None, 'quiet'), 539 ('q', 'quiet', None, 'quiet'),
560 except SignalInterrupt: 570 except SignalInterrupt:
561 u.warn("killed!\n") 571 u.warn("killed!\n")
562 except KeyboardInterrupt: 572 except KeyboardInterrupt:
563 u.warn("interrupted!\n") 573 u.warn("interrupted!\n")
564 except TypeError, inst: 574 except TypeError, inst:
575 import traceback
565 # was this an argument error? 576 # was this an argument error?
566 tb = traceback.extract_tb(sys.exc_info()[2]) 577 tb = traceback.extract_tb(sys.exc_info()[2])
567 if len(tb) > 2: # no 578 if len(tb) > 2: # no
568 raise 579 raise
569 u.warn("%s: invalid arguments\n" % i[0].__name__) 580 u.warn("%s: invalid arguments\n" % i[0].__name__)