Mercurial > hg > mercurial-crew-with-dirclash
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 |