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 |