mercurial/commands.py
changeset 2085 f71e9656524f
parent 2083 345107e167a0
parent 2057 fef2d653beaf
child 2092 1d3c6e63d703
equal deleted inserted replaced
2084:d66278012853 2085:f71e9656524f
  2257     This command tries to fix the repository status after an interrupted
  2257     This command tries to fix the repository status after an interrupted
  2258     operation. It should only be necessary when Mercurial suggests it.
  2258     operation. It should only be necessary when Mercurial suggests it.
  2259     """
  2259     """
  2260     if repo.recover():
  2260     if repo.recover():
  2261         return repo.verify()
  2261         return repo.verify()
  2262     return False
  2262     return 1
  2263 
  2263 
  2264 def remove(ui, repo, pat, *pats, **opts):
  2264 def remove(ui, repo, pat, *pats, **opts):
  2265     """remove the specified files on the next commit
  2265     """remove the specified files on the next commit
  2266 
  2266 
  2267     Schedule the indicated files for removal from the repository.
  2267     Schedule the indicated files for removal from the repository.
  3257 
  3257 
  3258     try:
  3258     try:
  3259         u = ui.ui()
  3259         u = ui.ui()
  3260     except util.Abort, inst:
  3260     except util.Abort, inst:
  3261         sys.stderr.write(_("abort: %s\n") % inst)
  3261         sys.stderr.write(_("abort: %s\n") % inst)
  3262         sys.exit(1)
  3262         return -1
  3263 
  3263 
  3264     external = []
  3264     external = []
  3265     for x in u.extensions():
  3265     for x in u.extensions():
  3266         def on_exception(exc, inst):
  3266         try:
  3267             u.warn(_("*** failed to import extension %s\n") % x[1])
  3267             if x[1]:
  3268             u.warn("%s\n" % inst)
       
  3269             if "--traceback" in sys.argv[1:]:
       
  3270                 traceback.print_exc()
       
  3271         if x[1]:
       
  3272             try:
       
  3273                 mod = imp.load_source(x[0], x[1])
  3268                 mod = imp.load_source(x[0], x[1])
  3274             except Exception, inst:
  3269             else:
  3275                 on_exception(Exception, inst)
  3270                 def importh(name):
  3276                 continue
  3271                     mod = __import__(name)
  3277         else:
  3272                     components = name.split('.')
  3278             def importh(name):
  3273                     for comp in components[1:]:
  3279                 mod = __import__(name)
  3274                         mod = getattr(mod, comp)
  3280                 components = name.split('.')
  3275                     return mod
  3281                 for comp in components[1:]:
       
  3282                     mod = getattr(mod, comp)
       
  3283                 return mod
       
  3284             try:
       
  3285                 try:
  3276                 try:
  3286                     mod = importh("hgext." + x[0])
  3277                     mod = importh("hgext." + x[0])
  3287                 except ImportError:
  3278                 except ImportError:
  3288                     mod = importh(x[0])
  3279                     mod = importh(x[0])
  3289             except Exception, inst:
  3280             external.append(mod)
  3290                 on_exception(Exception, inst)
  3281         except Exception, inst:
  3291                 continue
  3282             u.warn(_("*** failed to import extension %s: %s\n") % (x[0], inst))
  3292 
  3283             if "--traceback" in sys.argv[1:]:
  3293         external.append(mod)
  3284                 traceback.print_exc()
       
  3285                 return 1
       
  3286             continue
       
  3287 
  3294     for x in external:
  3288     for x in external:
  3295         cmdtable = getattr(x, 'cmdtable', {})
  3289         cmdtable = getattr(x, 'cmdtable', {})
  3296         for t in cmdtable:
  3290         for t in cmdtable:
  3297             if t in table:
  3291             if t in table:
  3298                 u.warn(_("module %s overrides %s\n") % (x.__name__, t))
  3292                 u.warn(_("module %s overrides %s\n") % (x.__name__, t))
  3330 
  3324 
  3331             path = u.expandpath(options["repository"]) or ""
  3325             path = u.expandpath(options["repository"]) or ""
  3332             repo = path and hg.repository(u, path=path) or None
  3326             repo = path and hg.repository(u, path=path) or None
  3333 
  3327 
  3334             if options['help']:
  3328             if options['help']:
  3335                 help_(u, cmd, options['version'])
  3329                 return help_(u, cmd, options['version'])
  3336                 sys.exit(0)
       
  3337             elif options['version']:
  3330             elif options['version']:
  3338                 show_version(u)
  3331                 return show_version(u)
  3339                 sys.exit(0)
       
  3340             elif not cmd:
  3332             elif not cmd:
  3341                 help_(u, 'shortlist')
  3333                 return help_(u, 'shortlist')
  3342                 sys.exit(0)
       
  3343 
  3334 
  3344             if cmd not in norepo.split():
  3335             if cmd not in norepo.split():
  3345                 try:
  3336                 try:
  3346                     if not repo:
  3337                     if not repo:
  3347                         repo = hg.repository(u, path=path)
  3338                         repo = hg.repository(u, path=path)
  3392             u.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1]))
  3383             u.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1]))
  3393             help_(u, inst.args[0])
  3384             help_(u, inst.args[0])
  3394         else:
  3385         else:
  3395             u.warn(_("hg: %s\n") % inst.args[1])
  3386             u.warn(_("hg: %s\n") % inst.args[1])
  3396             help_(u, 'shortlist')
  3387             help_(u, 'shortlist')
  3397         sys.exit(-1)
       
  3398     except AmbiguousCommand, inst:
  3388     except AmbiguousCommand, inst:
  3399         u.warn(_("hg: command '%s' is ambiguous:\n    %s\n") %
  3389         u.warn(_("hg: command '%s' is ambiguous:\n    %s\n") %
  3400                 (inst.args[0], " ".join(inst.args[1])))
  3390                 (inst.args[0], " ".join(inst.args[1])))
  3401         sys.exit(1)
       
  3402     except UnknownCommand, inst:
  3391     except UnknownCommand, inst:
  3403         u.warn(_("hg: unknown command '%s'\n") % inst.args[0])
  3392         u.warn(_("hg: unknown command '%s'\n") % inst.args[0])
  3404         help_(u, 'shortlist')
  3393         help_(u, 'shortlist')
  3405         sys.exit(1)
       
  3406     except hg.RepoError, inst:
  3394     except hg.RepoError, inst:
  3407         u.warn(_("abort: "), inst, "!\n")
  3395         u.warn(_("abort: "), inst, "!\n")
  3408     except lock.LockHeld, inst:
  3396     except lock.LockHeld, inst:
  3409         if inst.errno == errno.ETIMEDOUT:
  3397         if inst.errno == errno.ETIMEDOUT:
  3410             reason = _('timed out waiting for lock held by %s') % inst.locker
  3398             reason = _('timed out waiting for lock held by %s') % inst.locker
  3447             u.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename))
  3435             u.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename))
  3448         else:
  3436         else:
  3449             u.warn(_("abort: %s\n") % inst.strerror)
  3437             u.warn(_("abort: %s\n") % inst.strerror)
  3450     except util.Abort, inst:
  3438     except util.Abort, inst:
  3451         u.warn(_('abort: '), inst.args[0] % inst.args[1:], '\n')
  3439         u.warn(_('abort: '), inst.args[0] % inst.args[1:], '\n')
  3452         sys.exit(1)
       
  3453     except TypeError, inst:
  3440     except TypeError, inst:
  3454         # was this an argument error?
  3441         # was this an argument error?
  3455         tb = traceback.extract_tb(sys.exc_info()[2])
  3442         tb = traceback.extract_tb(sys.exc_info()[2])
  3456         if len(tb) > 2: # no
  3443         if len(tb) > 2: # no
  3457             raise
  3444             raise
  3458         u.debug(inst, "\n")
  3445         u.debug(inst, "\n")
  3459         u.warn(_("%s: invalid arguments\n") % cmd)
  3446         u.warn(_("%s: invalid arguments\n") % cmd)
  3460         help_(u, cmd)
  3447         help_(u, cmd)
  3461     except SystemExit:
  3448     except SystemExit, inst:
  3462         # don't catch this in the catch-all below
  3449         # Commands shouldn't sys.exit directly, but give a return code.
  3463         raise
  3450         # Just in case catch this and and pass exit code to caller.
       
  3451         return inst.code
  3464     except:
  3452     except:
  3465         u.warn(_("** unknown exception encountered, details follow\n"))
  3453         u.warn(_("** unknown exception encountered, details follow\n"))
  3466         u.warn(_("** report bug details to mercurial@selenic.com\n"))
  3454         u.warn(_("** report bug details to mercurial@selenic.com\n"))
  3467         u.warn(_("** Mercurial Distributed SCM (version %s)\n")
  3455         u.warn(_("** Mercurial Distributed SCM (version %s)\n")
  3468                % version.get_version())
  3456                % version.get_version())
  3469         raise
  3457         raise
  3470 
  3458 
  3471     sys.exit(-1)
  3459     return -1