##// END OF EJS Templates
copy & rename don't overwrite unless --force is specified
Robin Farine -
r1513:5c3b93b2 default
parent child Browse files
Show More
@@ -803,10 +803,13 b' def docopy(ui, repo, pats, opts):'
803 def copy(abssrc, relsrc, target, exact):
803 def copy(abssrc, relsrc, target, exact):
804 abstarget = util.canonpath(repo.root, cwd, target)
804 abstarget = util.canonpath(repo.root, cwd, target)
805 reltarget = util.pathto(cwd, abstarget)
805 reltarget = util.pathto(cwd, abstarget)
806 if not opts['force'] and repo.dirstate.state(abstarget) not in 'a?':
806 if os.path.exists(reltarget):
807 ui.warn(_('%s: not overwriting - file already managed\n') %
807 if opts['force']:
808 reltarget)
808 os.unlink(reltarget)
809 return
809 else:
810 ui.warn(_('%s: not overwriting - file exists\n') %
811 reltarget)
812 return
810 if ui.verbose or not exact:
813 if ui.verbose or not exact:
811 ui.status(_('copying %s to %s\n') % (relsrc, reltarget))
814 ui.status(_('copying %s to %s\n') % (relsrc, reltarget))
812 if not opts['after']:
815 if not opts['after']:
@@ -58,3 +58,21 b' mkdir d2/d21'
58 hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21
58 hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21
59 hg status
59 hg status
60 hg update -C
60 hg update -C
61
62 echo "# attempt to overwrite an existing file"
63 echo "ca" > d1/ca
64 hg rename d1/ba d1/ca
65 hg status
66 hg update -C
67
68 echo "# forced overwrite of an existing file"
69 echo "ca" > d1/ca
70 hg rename --force d1/ba d1/ca
71 hg status
72 hg update -C
73
74 echo "# replace a symlink with a file"
75 ln -s ba d1/ca
76 hg rename --force d1/ba d1/ca
77 hg status
78 hg update -C
@@ -49,7 +49,7 b' R d1/d11/a1'
49 R d2/b
49 R d2/b
50 # move everything under directory d1 to existing directory d2, do not
50 # move everything under directory d1 to existing directory d2, do not
51 # overwrite existing files (d2/b)
51 # overwrite existing files (d2/b)
52 d2/b: not overwriting - file already managed
52 d2/b: not overwriting - file exists
53 copying d1/d11/a1 to d2/d11/a1
53 copying d1/d11/a1 to d2/d11/a1
54 removing d1/d11/a1
54 removing d1/d11/a1
55 A d2/a
55 A d2/a
@@ -91,3 +91,13 b' A d2/d21/a'
91 A d2/d21/a1
91 A d2/d21/a1
92 R d1/a
92 R d1/a
93 R d1/d11/a1
93 R d1/d11/a1
94 # attempt to overwrite an existing file
95 d1/ca: not overwriting - file exists
96 abort: no files to copy
97 ? d1/ca
98 # forced overwrite of an existing file
99 A d1/ca
100 R d1/ba
101 # replace a symlink with a file
102 A d1/ca
103 R d1/ba
General Comments 0
You need to be logged in to leave comments. Login now