comparison mercurial/commands.py @ 3632:4cfb72bcb978

util: add copyfile function
author Matt Mackall <mpm@selenic.com>
date Mon, 13 Nov 2006 13:26:57 -0600
parents dc3504af7722
children 770c4fc03b8e
comparison
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