comparison mercurial/commands.py @ 4523:b9d311928caf

Use absolute paths in docopy.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Fri, 08 Jun 2007 23:49:12 -0300
parents 96d8a56d4ef9
children 6c58139f4eaa
comparison
equal deleted inserted replaced
4522:591322269fed 4523:b9d311928caf
496 return abs 496 return abs
497 497
498 # origsrc: hgsep 498 # origsrc: hgsep
499 # abssrc: hgsep 499 # abssrc: hgsep
500 # relsrc: ossep 500 # relsrc: ossep
501 # target: ossep 501 # otarget: ossep
502 def copy(origsrc, abssrc, relsrc, target, exact): 502 def copy(origsrc, abssrc, relsrc, otarget, exact):
503 abstarget = util.canonpath(repo.root, cwd, target) 503 abstarget = util.canonpath(repo.root, cwd, otarget)
504 reltarget = util.pathto(repo.root, cwd, abstarget) 504 reltarget = util.pathto(repo.root, cwd, abstarget)
505 prevsrc = targets.get(abstarget) 505 prevsrc = targets.get(abstarget)
506 src = repo.wjoin(abssrc)
507 target = repo.wjoin(abstarget)
506 if prevsrc is not None: 508 if prevsrc is not None:
507 ui.warn(_('%s: not overwriting - %s collides with %s\n') % 509 ui.warn(_('%s: not overwriting - %s collides with %s\n') %
508 (reltarget, util.localpath(abssrc), 510 (reltarget, util.localpath(abssrc),
509 util.localpath(prevsrc))) 511 util.localpath(prevsrc)))
510 return 512 return
511 if (not opts['after'] and os.path.exists(reltarget) or 513 if (not opts['after'] and os.path.exists(target) or
512 opts['after'] and repo.dirstate.state(abstarget) not in '?ar'): 514 opts['after'] and repo.dirstate.state(abstarget) not in '?ar'):
513 if not opts['force']: 515 if not opts['force']:
514 ui.warn(_('%s: not overwriting - file exists\n') % 516 ui.warn(_('%s: not overwriting - file exists\n') %
515 reltarget) 517 reltarget)
516 return 518 return
517 if not opts['after'] and not opts.get('dry_run'): 519 if not opts['after'] and not opts.get('dry_run'):
518 os.unlink(reltarget) 520 os.unlink(target)
519 if opts['after']: 521 if opts['after']:
520 if not os.path.exists(reltarget): 522 if not os.path.exists(target):
521 return 523 return
522 else: 524 else:
523 targetdir = os.path.dirname(reltarget) or '.' 525 targetdir = os.path.dirname(target) or '.'
524 if not os.path.isdir(targetdir) and not opts.get('dry_run'): 526 if not os.path.isdir(targetdir) and not opts.get('dry_run'):
525 os.makedirs(targetdir) 527 os.makedirs(targetdir)
526 try: 528 try:
527 restore = repo.dirstate.state(abstarget) == 'r' 529 restore = repo.dirstate.state(abstarget) == 'r'
528 if restore and not opts.get('dry_run'): 530 if restore and not opts.get('dry_run'):
529 repo.undelete([abstarget], wlock) 531 repo.undelete([abstarget], wlock)
530 try: 532 try:
531 if not opts.get('dry_run'): 533 if not opts.get('dry_run'):
532 util.copyfile(relsrc, reltarget) 534 util.copyfile(src, target)
533 restore = False 535 restore = False
534 finally: 536 finally:
535 if restore: 537 if restore:
536 repo.remove([abstarget], wlock=wlock) 538 repo.remove([abstarget], wlock=wlock)
537 except IOError, inst: 539 except IOError, inst: