mercurial/cmdutil.py
changeset 4548 c9fcebbfc422
parent 4525 78b6add1f966
child 4549 0c61124ad877
equal deleted inserted replaced
4547:8774d2cafe4d 4548:c9fcebbfc422
     8 from node import *
     8 from node import *
     9 from i18n import _
     9 from i18n import _
    10 import os, sys, mdiff, bdiff, util, templater, patch
    10 import os, sys, mdiff, bdiff, util, templater, patch
    11 
    11 
    12 revrangesep = ':'
    12 revrangesep = ':'
       
    13 
       
    14 def runcommand(u, options, d):
       
    15     # enter the debugger before command execution
       
    16     if options['debugger']:
       
    17         pdb.set_trace()
       
    18 
       
    19     try:
       
    20         try:
       
    21             if options['profile']:
       
    22                 import hotshot, hotshot.stats
       
    23                 prof = hotshot.Profile("hg.prof")
       
    24                 try:
       
    25                     try:
       
    26                         return prof.runcall(d)
       
    27                     except:
       
    28                         try:
       
    29                             u.warn(_('exception raised - generating '
       
    30                                      'profile anyway\n'))
       
    31                         except:
       
    32                             pass
       
    33                         raise
       
    34                 finally:
       
    35                     prof.close()
       
    36                     stats = hotshot.stats.load("hg.prof")
       
    37                     stats.strip_dirs()
       
    38                     stats.sort_stats('time', 'calls')
       
    39                     stats.print_stats(40)
       
    40             elif options['lsprof']:
       
    41                 try:
       
    42                     from mercurial import lsprof
       
    43                 except ImportError:
       
    44                     raise util.Abort(_(
       
    45                         'lsprof not available - install from '
       
    46                         'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/'))
       
    47                 p = lsprof.Profiler()
       
    48                 p.enable(subcalls=True)
       
    49                 try:
       
    50                     return d()
       
    51                 finally:
       
    52                     p.disable()
       
    53                     stats = lsprof.Stats(p.getstats())
       
    54                     stats.sort()
       
    55                     stats.pprint(top=10, file=sys.stderr, climit=5)
       
    56             else:
       
    57                 return d()
       
    58         finally:
       
    59             u.flush()
       
    60     except:
       
    61         # enter the debugger when we hit an exception
       
    62         if options['debugger']:
       
    63             pdb.post_mortem(sys.exc_info()[2])
       
    64         u.print_exc()
       
    65         raise
    13 
    66 
    14 def parseurl(url, revs):
    67 def parseurl(url, revs):
    15     '''parse url#branch, returning url, branch + revs'''
    68     '''parse url#branch, returning url, branch + revs'''
    16 
    69 
    17     if '#' not in url:
    70     if '#' not in url: