##// END OF EJS Templates
rename: add hint about --at-rev if source file doesn't exist...
rename: add hint about --at-rev if source file doesn't exist It's quite common that users want to record copy (rename) information after committing the working copy changes (i.e. an added and a deleted file). When they try `hg mv [--after] <src> <dst>`, that just fails because the source file doesn't exist. It seems helpful if we can point them to `--at-rev=.` in this case. Differential Revision: https://phab.mercurial-scm.org/D10697

File last commit:

r47897:5ffc6c18 default
r47897:5ffc6c18 default
Show More
test-copy.t
416 lines | 9.5 KiB | text/troff | Tads3Lexer
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ mkdir part1
$ cd part1
Nicolas Dumazet
tests: unify test-copy
r11805 $ hg init
$ echo a > a
$ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "1"
Nicolas Dumazet
tests: unify test-copy
r11805 $ hg status
$ hg copy a b
Adrian Buehlmann
add: introduce a warning message for non-portable filenames (issue2756) (BC)...
r13962 $ hg --config ui.portablefilenames=abort copy a con.xml
Augie Fackler
scmutil: use util.shellquote instead of %r...
r33795 abort: filename contains 'con', which is reserved on Windows: con.xml
Martin von Zweigbergk
errors: use InputError for errors about bad paths...
r46448 [10]
Nicolas Dumazet
tests: unify test-copy
r11805 $ hg status
A b
$ hg sum
Martin Geisler
tests: remove unneeded -d flags...
r12156 parent: 0:c19d34741b0a tip
Nicolas Dumazet
tests: unify test-copy
r11805 1
branch: default
commit: 1 copied
update: (current)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 1 draft
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg --debug commit -m "2"
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Nicolas Dumazet
tests: unify test-copy
r11805 b
b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Pierre-Yves David
caches: move the 'updating the branch cache' message in 'updatecaches'...
r32267 updating the branch cache
Martin Geisler
tests: remove unneeded -d flags...
r12156 committed changeset 1:93580a2c28a50a56f63526fb305067e6fbf739c4
Nicolas Dumazet
tests: unify test-copy
r11805
we should see two history entries
$ hg history -v
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:93580a2c28a5
Nicolas Dumazet
tests: unify test-copy
r11805 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-copy
r11805 files: b
description:
2
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:c19d34741b0a
Nicolas Dumazet
tests: unify test-copy
r11805 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-copy
r11805 files: a
description:
1
we should see one log entry for a
$ hg log a
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:c19d34741b0a
Nicolas Dumazet
tests: unify test-copy
r11805 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-copy
r11805 summary: 1
this should show a revision linked to changeset 0
Sune Foldager
tests: fix deprecated use of hg debugdata/debugindex...
r14182 $ hg debugindex a
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 0 b789fdd96dc2 000000000000 000000000000
Nicolas Dumazet
tests: unify test-copy
r11805
we should see one log entry for b
$ hg log b
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:93580a2c28a5
Nicolas Dumazet
tests: unify test-copy
r11805 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-copy
r11805 summary: 2
this should show a revision linked to changeset 1
Sune Foldager
tests: fix deprecated use of hg debugdata/debugindex...
r14182 $ hg debugindex b
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 1 37d9b5d994ea 000000000000 000000000000
Nicolas Dumazet
tests: unify test-copy
r11805
this should show the rename information in the metadata
Sune Foldager
tests: fix deprecated use of hg debugdata/debugindex...
r14182 $ hg debugdata b 0 | head -3 | tail -2
Nicolas Dumazet
tests: unify test-copy
r11805 copy: a
copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #if reporevlogstore
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ md5sum.py .hg/store/data/b.i
Pierre-Yves David
test: enable generaldelta in 'test-copy.t'...
r26919 44913824c8f5890ae218f9829535922e .hg/store/data/b.i
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #endif
Nicolas Dumazet
tests: unify test-copy
r11805 $ hg cat b > bsum
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ md5sum.py bsum
Nicolas Dumazet
tests: unify test-copy
r11805 60b725f10c9c85c70d97880dfe8191b3 bsum
$ hg cat a > asum
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ md5sum.py asum
Nicolas Dumazet
tests: unify test-copy
r11805 60b725f10c9c85c70d97880dfe8191b3 asum
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 2 changes to 2 files
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856
$ cd ..
$ mkdir part2
$ cd part2
$ hg init
$ echo foo > foo
should fail - foo is not managed
$ hg mv foo bar
foo: not copying - file is not managed
abort: no files to copy
Martin von Zweigbergk
rename: add hint about --at-rev if source file doesn't exist...
r47897 (maybe you meant to use --after --at-rev=.)
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ hg st -A
? foo
Martin von Zweigbergk
copy: respect ui.relative-paths in copy/rename...
r41806 respects ui.relative-paths
$ mkdir dir
$ cd dir
$ hg mv ../foo ../bar
../foo: not copying - file is not managed
abort: no files to copy
Martin von Zweigbergk
rename: add hint about --at-rev if source file doesn't exist...
r47897 (maybe you meant to use --after --at-rev=.)
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Martin von Zweigbergk
copy: respect ui.relative-paths in copy/rename...
r41806 $ hg mv ../foo ../bar --config ui.relative-paths=yes
../foo: not copying - file is not managed
abort: no files to copy
Martin von Zweigbergk
rename: add hint about --at-rev if source file doesn't exist...
r47897 (maybe you meant to use --after --at-rev=.)
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Martin von Zweigbergk
copy: respect ui.relative-paths in copy/rename...
r41806 $ hg mv ../foo ../bar --config ui.relative-paths=no
foo: not copying - file is not managed
abort: no files to copy
Martin von Zweigbergk
rename: add hint about --at-rev if source file doesn't exist...
r47897 (maybe you meant to use --after --at-rev=.)
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Martin von Zweigbergk
copy: respect ui.relative-paths in copy/rename...
r41806 $ cd ..
$ rmdir dir
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ hg add foo
dry-run; print a warning that this is not a real copy; foo is added
$ hg mv --dry-run foo bar
foo has not been committed yet, so no copy data will be stored for bar.
$ hg st -A
A foo
should print a warning that this is not a real copy; bar is added
$ hg mv foo bar
foo has not been committed yet, so no copy data will be stored for bar.
$ hg st -A
A bar
should print a warning that this is not a real copy; foo is added
$ hg cp bar foo
bar has not been committed yet, so no copy data will be stored for foo.
$ hg rm -f bar
$ rm bar
$ hg st -A
A foo
$ hg commit -m1
moving a missing file
$ rm foo
$ hg mv foo foo3
Yuya Nishihara
commands: replace "working copy" with "working directory" in help/messages...
r24364 foo: deleted in working directory
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 foo3 does not exist!
$ hg up -qC .
timeless@mozdev.org
spelling: nonexistent
r17492 copy --after to a nonexistent target filename
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ hg cp -A foo dummy
foo: not recording copy - dummy does not exist
Martin von Zweigbergk
rename: return error status if any rename/copy failed...
r39386 [1]
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856
dry-run; should show that foo is clean
$ hg copy --dry-run foo bar
$ hg st -A
C foo
should show copy
$ hg copy foo bar
$ hg st -C
A bar
foo
shouldn't show copy
$ hg commit -m2
$ hg st -C
should match
$ hg debugindex foo
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 0 2ed2a3912a0b 000000000000 000000000000
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ hg debugrename bar
bar renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
$ echo bleah > foo
$ echo quux > bar
$ hg commit -m3
should not be renamed
$ hg debugrename bar
bar not renamed
$ hg copy -f foo bar
should show copy
$ hg st -C
M bar
foo
Matt Harbison
largefiles: revert to lfilesrepo.status() being an unfiltered method...
r23958
XXX: filtering lfilesrepo.status() in 3.3-rc causes the copy source to not be
displayed.
$ hg st -C --config extensions.largefiles=
FUJIWARA Katsunori
tests: take extra care for fsmonitor at enabling incompatible extension...
r33425 The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !)
Matt Harbison
largefiles: revert to lfilesrepo.status() being an unfiltered method...
r23958 M bar
foo
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ hg commit -m3
should show no parents for tip
$ hg debugindex bar
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 1 7711d36246cc 000000000000 000000000000
1 2 bdf70a2b8d03 7711d36246cc 000000000000
2 3 b2558327ea8d 000000000000 000000000000
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 should match
$ hg debugindex foo
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 0 2ed2a3912a0b 000000000000 000000000000
1 2 dd12c926cf16 2ed2a3912a0b 000000000000
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 $ hg debugrename bar
bar renamed from foo:dd12c926cf165e3eb4cf87b084955cb617221c17
should show no copies
$ hg st -C
copies: add an devel option to trace all files...
r47137 note: since filelog based copy tracing only trace copy for new file, the copy information here is not displayed.
$ hg status --copies --change .
M bar
They are a devel option to walk all file and fine this information anyway.
$ hg status --copies --change . --config devel.copy-tracing.trace-all-files=yes
M bar
foo
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 copy --after on an added file
$ cp bar baz
$ hg add baz
$ hg cp -A bar baz
$ hg st -C
A baz
bar
foo was clean:
$ hg st -AC foo
C foo
Augie Fackler
copy: document current behavior of 'hg cp --after'...
r29958 Trying to copy on top of an existing file fails,
$ hg copy -A bar foo
Augie Fackler
copy: distinguish "file exists" cases and add a hint (BC)...
r30151 foo: not overwriting - file already committed
Martin von Zweigbergk
rename: quote hg commands in warnings...
r39384 ('hg copy --after --force' to replace the file by recording a copy)
Martin von Zweigbergk
rename: return error status if any rename/copy failed...
r39386 [1]
Augie Fackler
copy: distinguish "file exists" cases and add a hint (BC)...
r30151 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
Martin von Zweigbergk
rename: quote hg commands in warnings...
r39384 ('hg copy --force' to replace the file by recording a copy)
Martin von Zweigbergk
rename: return error status if any rename/copy failed...
r39386 [1]
Adrian Buehlmann
tests: roll test-copy2.t into test-copy.t
r16856 but it's considered modified after a copy --after --force
$ hg copy -Af bar foo
$ hg st -AC foo
M foo
bar
Augie Fackler
copy: distinguish "file exists" cases and add a hint (BC)...
r30151 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
Martin von Zweigbergk
rename: quote hg commands in warnings...
r39384 ('hg copy --after' to record the copy)
Martin von Zweigbergk
rename: return error status if any rename/copy failed...
r39386 [1]
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg co -qC .
$ rm baz xyzzy
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 Test unmarking copy/rename of a single file
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844
# Set up by creating a copy
$ hg cp bar baz
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 # Test unmarking as copy a non-existent file
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg copy --forget non-existent
non-existent: $ENOENT$
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 $ hg rename --forget non-existent
non-existent: $ENOENT$
# Test unmarking as copy an tracked but unrelated file
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg copy --forget foo
foo: not unmarking as copy - file is not marked as copied
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 $ hg rename --forget foo
foo: not unmarking as copy - file is not marked as copied
# Test unmarking as copy a copy source
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg copy --forget bar
bar: not unmarking as copy - file is not marked as copied
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 $ hg rename --forget bar
bar: not unmarking as copy - file is not marked as copied
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 # baz should still be marked as a copy
$ hg st -C
A baz
bar
# Test the normal case
$ hg copy --forget baz
$ hg st -C
A baz
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 $ rm bar
$ hg rename --after bar baz
$ hg st -C
A baz
bar
R bar
$ hg rename --forget baz
$ hg st -C
A baz
R bar
$ hg revert bar
# Test unmarking as copy with matching an non-matching patterns
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg cp bar baz --after
$ hg copy --forget bar baz
bar: not unmarking as copy - file is not marked as copied
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 $ hg cp bar baz --after
$ hg rename --forget bar baz
bar: not unmarking as copy - file is not marked as copied
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg st -C
A baz
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 # Test unmarking as copy with no exact matches
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg cp bar baz --after
$ hg copy --forget .
$ hg st -C
A baz
Martin von Zweigbergk
rename: add --forget option and stop suggesting `hg revert` for undoing...
r47648 $ hg cp bar baz --after
$ hg st -C
A baz
bar
$ hg rename --forget .
$ hg st -C
A baz
Martin von Zweigbergk
copy: add option to unmark file as copied...
r44844 $ hg forget baz
$ rm baz
Test unmarking copy of a directory
$ mkdir dir
$ echo foo > dir/foo
$ echo bar > dir/bar
$ hg add dir
adding dir/bar
adding dir/foo
$ hg ci -m 'add dir/'
$ hg cp dir dir2
copying dir/bar to dir2/bar
copying dir/foo to dir2/foo
$ touch dir2/untracked
$ hg copy --forget dir2
$ hg st -C
A dir2/bar
A dir2/foo
? dir2/untracked
Martin von Zweigbergk
copy: add experimetal support for unmarking committed copies...
r44845 # Clean up for next test
$ hg forget dir2
removing dir2/bar
removing dir2/foo
$ rm -r dir2
Test uncopy on committed copies
# Commit some copies
$ hg cp bar baz
$ hg cp bar qux
$ hg ci -m copies
$ hg st -C --change .
A baz
bar
A qux
bar
$ base=$(hg log -r '.^' -T '{rev}')
$ hg log -G -T '{rev}:{node|short} {desc}\n' -r $base:
@ 5:a612dc2edfda copies
|
o 4:4800b1f1f38e add dir/
|
~
# Add a dirty change on top to show that it's unaffected
$ echo dirty >> baz
$ hg st
M baz
$ cat baz
bleah
dirty
$ hg copy --forget --at-rev . baz
saved backup bundle to $TESTTMP/part2/.hg/strip-backup/a612dc2edfda-e36b4448-uncopy.hg
# The unwanted copy is no longer recorded, but the unrelated one is
$ hg st -C --change .
A baz
A qux
bar
# The old commit is gone and we have updated to the new commit
$ hg log -G -T '{rev}:{node|short} {desc}\n' -r $base:
@ 5:c45090e5effe copies
|
o 4:4800b1f1f38e add dir/
|
~
# Working copy still has the uncommitted change
$ hg st
M baz
$ cat baz
bleah
dirty
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..