Commit 76c3ca96 authored by Martin von Zweigbergk's avatar Martin von Zweigbergk
Browse files

rename: add support for --at-rev, which marks as copy and removes the source

I had previously only added support for `--at-rev` to `hg cp`, but not
to `hg mv`. This patch adds that support. Just like for `hg cp`, it
marks the destination as copied from the source, and doesn't care if
the source file still exists (because it only supports the `-A` mode,
aka "don't touch files" mode). It works whether or not the source file
still exists. This matches the behavior of `hg mv -A` in the working
copy.

Differential Revision: https://phab.mercurial-scm.org/D8840
parent d71693f799a0
......@@ -5780,6 +5780,13 @@ def remove(ui, repo, *pats, **opts):
b'rename|move|mv',
[
(b'A', b'after', None, _(b'record a rename that has already occurred')),
(
b'',
b'at-rev',
b'',
_(b'(un)mark renames in the given revision (EXPERIMENTAL)'),
_(b'REV'),
),
(
b'f',
b'force',
......
== New Features ==
* `hg mv -A` can now be used with `--at-rev`. It behaves just like
`hg cp -A --at-rev`, i.e. it marks the destination as a copy of the
source whether or not the source still exists (but the source must
exist in the parent revision).
== New Experimental Features ==
......
......@@ -353,7 +353,7 @@ Show all commands + options
push: force, rev, bookmark, branch, new-branch, pushvars, publish, ssh, remotecmd, insecure
recover: verify
remove: after, force, subrepos, include, exclude, dry-run
rename: after, force, include, exclude, dry-run
rename: after, at-rev, force, include, exclude, dry-run
resolve: all, list, mark, unmark, no-status, re-merge, tool, include, exclude, template
revert: all, date, rev, no-backup, interactive, include, exclude, dry-run
rollback: dry-run, force
......
......@@ -43,7 +43,7 @@ Test single file
A d1/d
d1/b
Test moved file (not copied)
Test moved file (not copied) using 'hg cp' command
$ hg co 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
......@@ -59,10 +59,40 @@ Test moved file (not copied)
d1/b
R d1/b
Test using directory as destination
Test moved file (not copied) using 'hg mv' command
$ hg co 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mv d1/b d1/d
$ hg rm -A d1/b
$ hg add d1/d
$ hg ci -m 'move d1/b to d1/d'
created new head
$ hg mv -A --at-rev . d1/b d1/d
saved backup bundle to $TESTTMP/.hg/strip-backup/519850c3ea27-153c8fbb-copy.hg
$ hg st -C --change .
A d1/d
d1/b
R d1/b
Test moved file (not copied) for which source still exists
$ hg co 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ cp d1/b d1/d
$ hg add d1/d
$ hg ci -m 'copy d1/b to d1/d'
created new head
$ hg mv -A --at-rev . d1/b d1/d
saved backup bundle to $TESTTMP/.hg/strip-backup/c8d0f6bcf7ca-1c9bb53e-copy.hg
$ hg st -C --change .
A d1/d
d1/b
Test using directory as destination
$ hg co 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ cp -R d1 d3
$ hg add d3
adding d3/a
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment