Show More
@@ -8,7 +8,7 b'' | |||||
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 |
|
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") | |
@@ -1004,14 +1004,11 b' def docopy(ui, repo, pats, opts, wlock):' | |||||
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 |
|
|
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) | |
@@ -2419,8 +2416,7 b' def revert(ui, repo, *pats, **opts):' | |||||
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 |
|
|
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: |
@@ -26,11 +26,8 b' def copyfile(src, dst, basedir=None):' | |||||
26 | targetdir = os.path.dirname(absdst) |
|
26 | targetdir = os.path.dirname(absdst) | |
27 | if not os.path.isdir(targetdir): |
|
27 | if not os.path.isdir(targetdir): | |
28 | os.makedirs(targetdir) |
|
28 | os.makedirs(targetdir) | |
29 | try: |
|
29 | ||
30 |
|
|
30 | util.copyfile(abssrc, absdst) | |
31 | shutil.copymode(abssrc, absdst) |
|
|||
32 | except shutil.Error, inst: |
|
|||
33 | raise util.Abort(str(inst)) |
|
|||
34 |
|
31 | |||
35 | # public functions |
|
32 | # public functions | |
36 |
|
33 |
@@ -460,6 +460,14 b' def unlink(f):' | |||||
460 | except OSError: |
|
460 | except OSError: | |
461 | pass |
|
461 | pass | |
462 |
|
462 | |||
|
463 | def copyfile(src, dest): | |||
|
464 | "copy a file, preserving mode" | |||
|
465 | try: | |||
|
466 | shutil.copyfile(src, dest) | |||
|
467 | shutil.copymode(src, dest) | |||
|
468 | except shutil.Error, inst: | |||
|
469 | raise util.Abort(str(inst)) | |||
|
470 | ||||
463 | def copyfiles(src, dst, hardlink=None): |
|
471 | def copyfiles(src, dst, hardlink=None): | |
464 | """Copy a directory tree using hardlinks if possible""" |
|
472 | """Copy a directory tree using hardlinks if possible""" | |
465 |
|
473 |
General Comments 0
You need to be logged in to leave comments.
Login now