5 # This software may be used and distributed according to the terms |
5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. |
6 # of the GNU General Public License, incorporated herein by reference. |
7 |
7 |
8 from demandload import demandload |
8 from demandload import demandload |
9 from node import * |
9 from node import * |
10 demandload(globals(), "os re sys signal shutil imp urllib") |
10 demandload(globals(), "os re sys signal shutil imp urllib pdb") |
11 demandload(globals(), "fancyopts ui hg util lock revlog") |
11 demandload(globals(), "fancyopts ui hg util lock revlog") |
12 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback") |
12 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback") |
13 demandload(globals(), "errno socket version struct atexit sets bz2") |
13 demandload(globals(), "errno socket version struct atexit sets bz2") |
14 |
14 |
15 class UnknownCommand(Exception): |
15 class UnknownCommand(Exception): |
1847 ('', 'cwd', '', 'change working directory'), |
1847 ('', 'cwd', '', 'change working directory'), |
1848 ('y', 'noninteractive', None, 'run non-interactively'), |
1848 ('y', 'noninteractive', None, 'run non-interactively'), |
1849 ('q', 'quiet', None, 'quiet mode'), |
1849 ('q', 'quiet', None, 'quiet mode'), |
1850 ('v', 'verbose', None, 'verbose mode'), |
1850 ('v', 'verbose', None, 'verbose mode'), |
1851 ('', 'debug', None, 'debug mode'), |
1851 ('', 'debug', None, 'debug mode'), |
|
1852 ('', 'debugger', None, 'start debugger'), |
1852 ('', 'traceback', None, 'print traceback on exception'), |
1853 ('', 'traceback', None, 'print traceback on exception'), |
1853 ('', 'time', None, 'time how long the command takes'), |
1854 ('', 'time', None, 'time how long the command takes'), |
1854 ('', 'profile', None, 'profile'), |
1855 ('', 'profile', None, 'profile'), |
1855 ('', 'version', None, 'output version information and exit'), |
1856 ('', 'version', None, 'output version information and exit'), |
1856 ('h', 'help', None, 'display help and exit'), |
1857 ('h', 'help', None, 'display help and exit'), |
1968 atexit.register(print_time) |
1969 atexit.register(print_time) |
1969 |
1970 |
1970 u.updateopts(options["verbose"], options["debug"], options["quiet"], |
1971 u.updateopts(options["verbose"], options["debug"], options["quiet"], |
1971 not options["noninteractive"]) |
1972 not options["noninteractive"]) |
1972 |
1973 |
|
1974 # enter the debugger before command execution |
|
1975 if options['debugger']: |
|
1976 pdb.set_trace() |
|
1977 |
1973 try: |
1978 try: |
1974 try: |
1979 try: |
1975 if options['help']: |
1980 if options['help']: |
1976 help_(u, cmd, options['version']) |
1981 help_(u, cmd, options['version']) |
1977 sys.exit(0) |
1982 sys.exit(0) |
2009 stats.print_stats(40) |
2014 stats.print_stats(40) |
2010 return r |
2015 return r |
2011 else: |
2016 else: |
2012 return d() |
2017 return d() |
2013 except: |
2018 except: |
|
2019 # enter the debugger when we hit an exception |
|
2020 if options['debugger']: |
|
2021 pdb.post_mortem(sys.exc_info()[2]) |
2014 if options['traceback']: |
2022 if options['traceback']: |
2015 traceback.print_exc() |
2023 traceback.print_exc() |
2016 raise |
2024 raise |
2017 except hg.RepoError, inst: |
2025 except hg.RepoError, inst: |
2018 u.warn("abort: ", inst, "!\n") |
2026 u.warn("abort: ", inst, "!\n") |