mercurial/commands.py
changeset 2414 86e07466bcfc
parent 2413 c1ec81319870
child 2415 dec79ed61ee1
equal deleted inserted replaced
2413:c1ec81319870 2414:86e07466bcfc
  1053             opts['after'] and repo.dirstate.state(abstarget) not in '?r'):
  1053             opts['after'] and repo.dirstate.state(abstarget) not in '?r'):
  1054             if not opts['force']:
  1054             if not opts['force']:
  1055                 ui.warn(_('%s: not overwriting - file exists\n') %
  1055                 ui.warn(_('%s: not overwriting - file exists\n') %
  1056                         reltarget)
  1056                         reltarget)
  1057                 return
  1057                 return
  1058             if not opts['after']:
  1058             if not opts['after'] and not opts['dry_run']:
  1059                 os.unlink(reltarget)
  1059                 os.unlink(reltarget)
  1060         if opts['after']:
  1060         if opts['after']:
  1061             if not os.path.exists(reltarget):
  1061             if not os.path.exists(reltarget):
  1062                 return
  1062                 return
  1063         else:
  1063         else:
  1064             targetdir = os.path.dirname(reltarget) or '.'
  1064             targetdir = os.path.dirname(reltarget) or '.'
  1065             if not os.path.isdir(targetdir):
  1065             if not os.path.isdir(targetdir) and not opts['dry_run']:
  1066                 os.makedirs(targetdir)
  1066                 os.makedirs(targetdir)
  1067             try:
  1067             try:
  1068                 restore = repo.dirstate.state(abstarget) == 'r'
  1068                 restore = repo.dirstate.state(abstarget) == 'r'
  1069                 if restore:
  1069                 if restore and not dry_run:
  1070                     repo.undelete([abstarget], wlock)
  1070                     repo.undelete([abstarget], wlock)
  1071                 try:
  1071                 try:
  1072                     shutil.copyfile(relsrc, reltarget)
  1072                     if not opts['dry_run']:
  1073                     shutil.copymode(relsrc, reltarget)
  1073                         shutil.copyfile(relsrc, reltarget)
       
  1074                         shutil.copymode(relsrc, reltarget)
  1074                     restore = False
  1075                     restore = False
  1075                 finally:
  1076                 finally:
  1076                     if restore:
  1077                     if restore:
  1077                         repo.remove([abstarget], wlock)
  1078                         repo.remove([abstarget], wlock)
  1078             except shutil.Error, inst:
  1079             except shutil.Error, inst:
  1086                     errors += 1
  1087                     errors += 1
  1087                     return
  1088                     return
  1088         if ui.verbose or not exact:
  1089         if ui.verbose or not exact:
  1089             ui.status(_('copying %s to %s\n') % (relsrc, reltarget))
  1090             ui.status(_('copying %s to %s\n') % (relsrc, reltarget))
  1090         targets[abstarget] = abssrc
  1091         targets[abstarget] = abssrc
  1091         if abstarget != origsrc:
  1092         if abstarget != origsrc and not opts['dry_run']:
  1092             repo.copy(origsrc, abstarget, wlock)
  1093             repo.copy(origsrc, abstarget, wlock)
  1093         copied.append((abssrc, relsrc, exact))
  1094         copied.append((abssrc, relsrc, exact))
  1094 
  1095 
  1095     def targetpathfn(pat, dest, srcs):
  1096     def targetpathfn(pat, dest, srcs):
  1096         if os.path.isdir(pat):
  1097         if os.path.isdir(pat):
  1170             continue
  1171             continue
  1171         copylist.append((tfn(pat, dest, srcs), srcs))
  1172         copylist.append((tfn(pat, dest, srcs), srcs))
  1172     if not copylist:
  1173     if not copylist:
  1173         raise util.Abort(_('no files to copy'))
  1174         raise util.Abort(_('no files to copy'))
  1174 
  1175 
  1175     if not opts.get('dry_run'):
  1176     for targetpath, srcs in copylist:
  1176         for targetpath, srcs in copylist:
  1177         for origsrc, abssrc, relsrc, exact in srcs:
  1177             for origsrc, abssrc, relsrc, exact in srcs:
  1178             copy(origsrc, abssrc, relsrc, targetpath(abssrc), exact)
  1178                 copy(origsrc, abssrc, relsrc, targetpath(abssrc), exact)
       
  1179 
  1179 
  1180     if errors:
  1180     if errors:
  1181         ui.warn(_('(consider using --after)\n'))
  1181         ui.warn(_('(consider using --after)\n'))
  1182     return errors, copied
  1182     return errors, copied
  1183 
  1183 
  2307     names = []
  2307     names = []
  2308     for abs, rel, exact in copied:
  2308     for abs, rel, exact in copied:
  2309         if ui.verbose or not exact:
  2309         if ui.verbose or not exact:
  2310             ui.status(_('removing %s\n') % rel)
  2310             ui.status(_('removing %s\n') % rel)
  2311         names.append(abs)
  2311         names.append(abs)
  2312     repo.remove(names, True, wlock)
  2312     if not opts['dry_run']:
       
  2313         repo.remove(names, True, wlock)
  2313     return errs
  2314     return errs
  2314 
  2315 
  2315 def revert(ui, repo, *pats, **opts):
  2316 def revert(ui, repo, *pats, **opts):
  2316     """revert files or dirs to their states as of some revision
  2317     """revert files or dirs to their states as of some revision
  2317 
  2318 
  3064         (rename,
  3065         (rename,
  3065          [('A', 'after', None, _('record a rename that has already occurred')),
  3066          [('A', 'after', None, _('record a rename that has already occurred')),
  3066           ('f', 'force', None,
  3067           ('f', 'force', None,
  3067            _('forcibly copy over an existing managed file')),
  3068            _('forcibly copy over an existing managed file')),
  3068           ('I', 'include', [], _('include names matching the given patterns')),
  3069           ('I', 'include', [], _('include names matching the given patterns')),
  3069           ('X', 'exclude', [], _('exclude names matching the given patterns'))],
  3070           ('X', 'exclude', [], _('exclude names matching the given patterns')),
       
  3071           ('n', 'dry-run', None, _('print what would be done'))],
  3070          _('hg rename [OPTION]... SOURCE... DEST')),
  3072          _('hg rename [OPTION]... SOURCE... DEST')),
  3071     "^revert":
  3073     "^revert":
  3072         (revert,
  3074         (revert,
  3073          [('r', 'rev', '', _('revision to revert to')),
  3075          [('r', 'rev', '', _('revision to revert to')),
  3074           ('', 'no-backup', None, _('do not save backup copies of files')),
  3076           ('', 'no-backup', None, _('do not save backup copies of files')),