Show More
@@ -29,7 +29,21 b' def runcatch(u, args):' | |||||
29 | if num: signal.signal(num, catchterm) |
|
29 | if num: signal.signal(num, catchterm) | |
30 |
|
30 | |||
31 | try: |
|
31 | try: | |
32 | return dispatch(u, args) |
|
32 | try: | |
|
33 | # enter the debugger before command execution | |||
|
34 | if '--debugger' in args: | |||
|
35 | pdb.set_trace() | |||
|
36 | try: | |||
|
37 | return dispatch(u, args) | |||
|
38 | finally: | |||
|
39 | u.flush() | |||
|
40 | except: | |||
|
41 | # enter the debugger when we hit an exception | |||
|
42 | if '--debugger' in args: | |||
|
43 | pdb.post_mortem(sys.exc_info()[2]) | |||
|
44 | u.print_exc() | |||
|
45 | raise | |||
|
46 | ||||
33 | except ParseError, inst: |
|
47 | except ParseError, inst: | |
34 | if inst.args[0]: |
|
48 | if inst.args[0]: | |
35 | u.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1])) |
|
49 | u.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1])) | |
@@ -281,57 +295,43 b' def dispatch(u, args):' | |||||
281 | return runcommand(u, options, d) |
|
295 | return runcommand(u, options, d) | |
282 |
|
296 | |||
283 | def runcommand(u, options, d): |
|
297 | def runcommand(u, options, d): | |
284 | # enter the debugger before command execution |
|
298 | if options['profile']: | |
285 | if options['debugger']: |
|
299 | import hotshot, hotshot.stats | |
286 | pdb.set_trace() |
|
300 | prof = hotshot.Profile("hg.prof") | |
287 |
|
||||
288 | try: |
|
|||
289 | try: |
|
301 | try: | |
290 |
|
|
302 | try: | |
291 | import hotshot, hotshot.stats |
|
303 | return prof.runcall(d) | |
292 | prof = hotshot.Profile("hg.prof") |
|
304 | except: | |
293 | try: |
|
305 | try: | |
294 | try: |
|
306 | u.warn(_('exception raised - generating ' | |
295 |
|
|
307 | 'profile anyway\n')) | |
296 |
|
|
308 | except: | |
297 |
|
|
309 | pass | |
298 | u.warn(_('exception raised - generating ' |
|
310 | raise | |
299 | 'profile anyway\n')) |
|
|||
300 | except: |
|
|||
301 | pass |
|
|||
302 | raise |
|
|||
303 | finally: |
|
|||
304 | prof.close() |
|
|||
305 | stats = hotshot.stats.load("hg.prof") |
|
|||
306 | stats.strip_dirs() |
|
|||
307 | stats.sort_stats('time', 'calls') |
|
|||
308 | stats.print_stats(40) |
|
|||
309 | elif options['lsprof']: |
|
|||
310 | try: |
|
|||
311 | from mercurial import lsprof |
|
|||
312 | except ImportError: |
|
|||
313 | raise util.Abort(_( |
|
|||
314 | 'lsprof not available - install from ' |
|
|||
315 | 'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/')) |
|
|||
316 | p = lsprof.Profiler() |
|
|||
317 | p.enable(subcalls=True) |
|
|||
318 | try: |
|
|||
319 | return d() |
|
|||
320 | finally: |
|
|||
321 | p.disable() |
|
|||
322 | stats = lsprof.Stats(p.getstats()) |
|
|||
323 | stats.sort() |
|
|||
324 | stats.pprint(top=10, file=sys.stderr, climit=5) |
|
|||
325 | else: |
|
|||
326 | return d() |
|
|||
327 | finally: |
|
311 | finally: | |
328 |
|
|
312 | prof.close() | |
329 | except: |
|
313 | stats = hotshot.stats.load("hg.prof") | |
330 | # enter the debugger when we hit an exception |
|
314 | stats.strip_dirs() | |
331 | if options['debugger']: |
|
315 | stats.sort_stats('time', 'calls') | |
332 | pdb.post_mortem(sys.exc_info()[2]) |
|
316 | stats.print_stats(40) | |
333 | u.print_exc() |
|
317 | elif options['lsprof']: | |
334 |
|
|
318 | try: | |
|
319 | from mercurial import lsprof | |||
|
320 | except ImportError: | |||
|
321 | raise util.Abort(_( | |||
|
322 | 'lsprof not available - install from ' | |||
|
323 | 'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/')) | |||
|
324 | p = lsprof.Profiler() | |||
|
325 | p.enable(subcalls=True) | |||
|
326 | try: | |||
|
327 | return d() | |||
|
328 | finally: | |||
|
329 | p.disable() | |||
|
330 | stats = lsprof.Stats(p.getstats()) | |||
|
331 | stats.sort() | |||
|
332 | stats.pprint(top=10, file=sys.stderr, climit=5) | |||
|
333 | else: | |||
|
334 | return d() | |||
335 |
|
335 | |||
336 | def bail_if_changed(repo): |
|
336 | def bail_if_changed(repo): | |
337 | modified, added, removed, deleted = repo.status()[:4] |
|
337 | modified, added, removed, deleted = repo.status()[:4] |
General Comments 0
You need to be logged in to leave comments.
Login now