Mercurial > hg
diff tests/test-rename-rev.t @ 44367:9dab3fa64325
copy: add experimental support for marking committed copies
The simplest way I'm aware of to mark a file as copied/moved after
committing is this:
hg uncommit --keep <src> <dest> # <src> needed for move, but not copy
hg mv --after <src> <dest>
hg amend
This patch teaches `hg copy` a `--at-rev` argument to simplify that
into:
hg copy --after --at-rev . <src> <dest>
In addition to being simpler, it doesn't touch the working copy, so it
can easily be used even if the destination file has been modified in
the working copy.
Differential Revision: https://phab.mercurial-scm.org/D8035
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 20 Dec 2019 13:24:46 -0800 |
parents | tests/test-rename.t@5b92a717bfc1 |
children | 5c49a4fdb238 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-rename-rev.t Fri Dec 20 13:24:46 2019 -0800 @@ -0,0 +1,56 @@ + $ hg init + $ mkdir d1 d1/d11 d2 + $ echo d1/a > d1/a + $ echo d1/ba > d1/ba + $ echo d1/a1 > d1/d11/a1 + $ echo d1/b > d1/b + $ echo d2/b > d2/b + $ hg add d1/a d1/b d1/ba d1/d11/a1 d2/b + $ hg commit -m "intial" + + +Test single file + +# One recoded copy, one copy to record after commit + $ hg cp d1/b d1/c + $ cp d1/b d1/d + $ hg add d1/d + $ hg ci -m 'copy d1/b to d1/c and d1/d' + $ hg st -C --change . + A d1/c + d1/b + A d1/d +# Errors out without --after for now + $ hg cp --at-rev . d1/b d1/d + abort: --at-rev requires --after + [255] +# Errors out with non-existent destination + $ hg cp -A --at-rev . d1/b d1/non-existent + abort: d1/non-existent: copy destination does not exist in 8a9d70fa20c9 + [255] +# Successful invocation + $ hg cp -A --at-rev . d1/b d1/d + saved backup bundle to $TESTTMP/.hg/strip-backup/8a9d70fa20c9-973ae357-copy.hg +# New copy is recorded, and previously recorded copy is also still there + $ hg st -C --change . + A d1/c + d1/b + A d1/d + d1/b + +Test using directory as destination + + $ hg co 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ cp -R d1 d3 + $ hg add d3 + adding d3/a + adding d3/b + adding d3/ba + adding d3/d11/a1 + $ hg ci -m 'copy d1/ to d3/' + created new head + $ hg cp -A --at-rev . d1 d3 + abort: d3: --at-rev does not support a directory as destination + [255] +