mercurial/commands.py
changeset 3632 4cfb72bcb978
parent 3631 dc3504af7722
child 3634 770c4fc03b8e
equal deleted inserted replaced
3631:dc3504af7722 3632:4cfb72bcb978
     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 from i18n import gettext as _
    10 from i18n import gettext as _
    11 demandload(globals(), "os re sys signal shutil imp urllib pdb shlex")
    11 demandload(globals(), "os re sys signal imp urllib pdb shlex")
    12 demandload(globals(), "fancyopts ui hg util lock revlog templater bundlerepo")
    12 demandload(globals(), "fancyopts ui hg util lock revlog templater bundlerepo")
    13 demandload(globals(), "difflib patch tempfile time")
    13 demandload(globals(), "difflib patch tempfile time")
    14 demandload(globals(), "traceback errno version atexit sets bz2")
    14 demandload(globals(), "traceback errno version atexit sets bz2")
    15 demandload(globals(), "archival changegroup cmdutil hgweb.server sshserver")
    15 demandload(globals(), "archival changegroup cmdutil hgweb.server sshserver")
    16 
    16 
  1002                 restore = repo.dirstate.state(abstarget) == 'r'
  1002                 restore = repo.dirstate.state(abstarget) == 'r'
  1003                 if restore and not opts.get('dry_run'):
  1003                 if restore and not opts.get('dry_run'):
  1004                     repo.undelete([abstarget], wlock)
  1004                     repo.undelete([abstarget], wlock)
  1005                 try:
  1005                 try:
  1006                     if not opts.get('dry_run'):
  1006                     if not opts.get('dry_run'):
  1007                         shutil.copyfile(relsrc, reltarget)
  1007                         util.copyfile(relsrc, reltarget)
  1008                         shutil.copymode(relsrc, reltarget)
       
  1009                     restore = False
  1008                     restore = False
  1010                 finally:
  1009                 finally:
  1011                     if restore:
  1010                     if restore:
  1012                         repo.remove([abstarget], wlock)
  1011                         repo.remove([abstarget], wlock)
  1013             except shutil.Error, inst:
       
  1014                 raise util.Abort(str(inst))
       
  1015             except IOError, inst:
  1012             except IOError, inst:
  1016                 if inst.errno == errno.ENOENT:
  1013                 if inst.errno == errno.ENOENT:
  1017                     ui.warn(_('%s: deleted in working copy\n') % relsrc)
  1014                     ui.warn(_('%s: deleted in working copy\n') % relsrc)
  1018                 else:
  1015                 else:
  1019                     ui.warn(_('%s: cannot copy - %s\n') %
  1016                     ui.warn(_('%s: cannot copy - %s\n') %
  2417             if dobackup and not opts['no_backup'] and os.path.exists(rel):
  2414             if dobackup and not opts['no_backup'] and os.path.exists(rel):
  2418                 bakname = "%s.orig" % rel
  2415                 bakname = "%s.orig" % rel
  2419                 ui.note(_('saving current version of %s as %s\n') %
  2416                 ui.note(_('saving current version of %s as %s\n') %
  2420                         (rel, bakname))
  2417                         (rel, bakname))
  2421                 if not opts.get('dry_run'):
  2418                 if not opts.get('dry_run'):
  2422                     shutil.copyfile(rel, bakname)
  2419                     util.copyfile(rel, bakname)
  2423                     shutil.copymode(rel, bakname)
       
  2424             if ui.verbose or not exact:
  2420             if ui.verbose or not exact:
  2425                 ui.status(xlist[1] % rel)
  2421                 ui.status(xlist[1] % rel)
  2426         for table, hitlist, misslist, backuphit, backupmiss in disptable:
  2422         for table, hitlist, misslist, backuphit, backupmiss in disptable:
  2427             if abs not in table: continue
  2423             if abs not in table: continue
  2428             # file has changed in dirstate
  2424             # file has changed in dirstate