Comments
Patch
@@ -640,8 +640,26 @@ def copy(ui, repo, pats, opts, rename=Fa
if not after and exists or after and state in 'mn':
if not opts['force']:
- ui.warn(_('%s: not overwriting - file exists\n') %
- reltarget)
+ if state in 'mn':
+ msg = _('%s: not overwriting - file already committed\n')
+ if after:
+ flags = '--after --force'
+ else:
+ flags = '--force'
+ if rename:
+ hint = _('(hg rename %s to replace the file by '
+ 'recording a rename)\n') % flags
+ else:
+ hint = _('(hg copy %s to replace the file by '
+ 'recording a copy)\n') % flags
+ else:
+ msg = _('%s: not overwriting - file exists\n')
+ if rename:
+ hint = _('(hg rename --after to record the rename)\n')
+ else:
+ hint = _('(hg copy --after to record the copy)\n')
+ ui.warn(msg % reltarget)
+ ui.warn(hint)
return
if after:
@@ -226,11 +226,23 @@ foo was clean:
C foo
Trying to copy on top of an existing file fails,
$ hg copy -A bar foo
- foo: not overwriting - file exists
+ foo: not overwriting - file already committed
+ (hg copy --after --force to replace the file by recording a copy)
+same error without the --after, so the user doesn't have to go through
+two hints:
+ $ hg copy bar foo
+ foo: not overwriting - file already committed
+ (hg copy --force to replace the file by recording a copy)
but it's considered modified after a copy --after --force
$ hg copy -Af bar foo
$ hg st -AC foo
M foo
bar
+The hint for a file that exists but is not in file history doesn't
+mention --force:
+ $ touch xyzzy
+ $ hg cp bar xyzzy
+ xyzzy: not overwriting - file exists
+ (hg copy --after to record the copy)
$ cd ..
@@ -265,7 +265,8 @@ move everything under directory d1 to ex
overwrite existing files (d2/b)
$ hg rename d1/* d2
- d2/b: not overwriting - file exists
+ d2/b: not overwriting - file already committed
+ (hg rename --force to replace the file by recording a rename)
moving d1/d11/a1 to d2/d11/a1 (glob)
$ hg status -C
A d2/a
@@ -370,6 +371,7 @@ attempt to overwrite an existing file
$ echo "ca" > d1/ca
$ hg rename d1/ba d1/ca
d1/ca: not overwriting - file exists
+ (hg rename --after to record the rename)
$ hg status -C
? d1/ca
$ hg update -C
@@ -393,6 +395,7 @@ attempt to overwrite an existing broken
$ ln -s ba d1/ca
$ hg rename --traceback d1/ba d1/ca
d1/ca: not overwriting - file exists
+ (hg rename --after to record the rename)
$ hg status -C
? d1/ca
$ hg update -C