annotate tests/test-rename @ 5192:33015dac5df5

convert: fix mercurial_sink.putcommit Changeset 4ebc8693ce72 added some code to putcommit to avoid creating a revision that touches no files, but this can break regular conversions from some repositories: - conceptually, since we're converting a repo, we should try to make the new hg repo as similar as possible to the original repo - we should create a new changeset, even if the original revision didn't touch any files (maybe the commit message had some important bit); - even if a "regular" revision that doesn't touch any file may seem weird (and maybe even broken), it's completely legitimate for a merge revision to not touch any file, and, if we just skip it, the converted repo will end up with wrong history and possibly an extra head. As an example, say the crew and main hg repos are sync'ed. Somebody sends an important patch to the mailing list. Matt quickly applies and pushes it. But at the same time somebody also applies it to crew and pushes it. Suppose the commit message ended up being a bit different (say, there was a typo and somebody didn't fix it) or that the date ended up being different (because of different patch-applying scripts): the changeset hashes will be different, but the manifests will be the same. Since both changesets were pushed to public repos, it's hard to recall them. If both are merged, the manifest from the resulting merge revision will have the exact same contents as its parents - i.e. the merge revision really doesn't touch any file at all. To keep the file filtering stuff "working", the generic code was changed to skip empty revisions if we're filtering the repo, fixing a bug in the process (we want parents[0] instead of tip).
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Fri, 17 Aug 2007 20:18:05 -0300
parents 438603c1eb6f
children 7e6138cb8d38
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
1 #!/bin/sh
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
2
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
3 hg init
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
4 mkdir d1 d1/d11 d2
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
5 echo d1/a > d1/a
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
6 echo d1/ba > d1/ba
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
7 echo d1/a1 > d1/d11/a1
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
8 echo d1/b > d1/b
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
9 echo d2/b > d2/b
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
10 hg add d1/a d1/b d1/ba d1/d11/a1 d2/b
1933
7544700fd931 Use 'hg ci -d "1000000 0"' in tests to circumvent problem with leading zero.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1822
diff changeset
11 hg commit -m "1" -d "1000000 0"
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
12
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
13 echo "# rename a single file"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
14 hg rename d1/d11/a1 d2/c
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
15 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
16 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
17
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
18 echo "# rename --after a single file"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
19 mv d1/d11/a1 d2/c
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
20 hg rename --after d1/d11/a1 d2/c
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
21 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
22 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
23
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
24 echo "# move a single file to an existing directory"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
25 hg rename d1/d11/a1 d2
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
26 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
27 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
28
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
29 echo "# move --after a single file to an existing directory"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
30 mv d1/d11/a1 d2
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
31 hg rename --after d1/d11/a1 d2
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
32 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
33 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
34
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
35 echo "# rename a file using a relative path"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
36 (cd d1/d11; hg rename ../../d2/b e)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
37 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
38 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
39
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
40 echo "# rename --after a file using a relative path"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
41 (cd d1/d11; mv ../../d2/b e; hg rename --after ../../d2/b e)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
42 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
43 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
44
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
45 echo "# rename directory d1 as d3"
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
46 hg rename d1/ d3
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
47 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
48 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
49
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
50 echo "# rename --after directory d1 as d3"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
51 mv d1 d3
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
52 hg rename --after d1 d3
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
53 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
54 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
55
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
56 echo "# move a directory using a relative path"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
57 (cd d2; mkdir d3; hg rename ../d1/d11 d3)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
58 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
59 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
60
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
61 echo "# move --after a directory using a relative path"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
62 (cd d2; mkdir d3; mv ../d1/d11 d3; hg rename --after ../d1/d11 d3)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
63 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
64 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
65
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
66 echo "# move directory d1/d11 to an existing directory d2 (removes empty d1)"
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
67 hg rename d1/d11/ d2
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
68 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
69 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
70
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
71 echo "# move directories d1 and d2 to a new directory d3"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
72 mkdir d3
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
73 hg rename d1 d2 d3
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
74 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
75 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
76
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
77 echo "# move --after directories d1 and d2 to a new directory d3"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
78 mkdir d3
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
79 mv d1 d2 d3
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
80 hg rename --after d1 d2 d3
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
81 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
82 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
83
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
84 echo "# move everything under directory d1 to existing directory d2, do not"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
85 echo "# overwrite existing files (d2/b)"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
86 hg rename d1/* d2
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
87 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
88 diff d1/b d2/b
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
89 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
90
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
91 echo "# attempt to move potentially more than one file into a non-existent"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
92 echo "# directory"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
93 hg rename 'glob:d1/**' dx
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
94
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
95 echo "# move every file under d1 to d2/d21 (glob)"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
96 mkdir d2/d21
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
97 hg rename 'glob:d1/**' d2/d21
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
98 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
99 hg update -C
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
100
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
101 echo "# move --after some files under d1 to d2/d21 (glob)"
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
102 mkdir d2/d21
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
103 mv d1/a d1/d11/a1 d2/d21
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
104 hg rename --after 'glob:d1/**' d2/d21
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
105 hg status -C
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
106 hg update -C
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1515
diff changeset
107
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
108 echo "# move every file under d1 starting with an 'a' to d2/d21 (regexp)"
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
109 mkdir d2/d21
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
110 hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
111 hg status -C
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents:
diff changeset
112 hg update -C
1513
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
113
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
114 echo "# attempt to overwrite an existing file"
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
115 echo "ca" > d1/ca
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
116 hg rename d1/ba d1/ca
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
117 hg status -C
1513
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
118 hg update -C
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
119
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
120 echo "# forced overwrite of an existing file"
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
121 echo "ca" > d1/ca
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
122 hg rename --force d1/ba d1/ca
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
123 hg status -C
1513
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
124 hg update -C
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
125
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
126 echo "# replace a symlink with a file"
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
127 ln -s ba d1/ca
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
128 hg rename --force d1/ba d1/ca
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
129 hg status -C
1513
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
130 hg update -C
1514
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
131
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
132 echo "# do not copy more than one source file to the same destination file"
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
133 mkdir d3
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
134 hg rename d1/* d2/* d3
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
135 hg status -C
1514
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
136 hg update -C
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
137
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
138 echo "# move a whole subtree with \"hg rename .\""
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
139 mkdir d3
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
140 (cd d1; hg rename . ../d3)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
141 hg status -C
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
142 hg update -C
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
143
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
144 echo "# move a whole subtree with \"hg rename --after .\""
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
145 mkdir d3
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
146 mv d1/* d3
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
147 (cd d1; hg rename --after . ../d3)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
148 hg status -C
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
149 hg update -C
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
150
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
151 echo "# move the parent tree with \"hg rename ..\""
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
152 (cd d1/d11; hg rename .. ../../d3)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
153 hg status -C
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1565
diff changeset
154 hg update -C
1634
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
155
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
156 echo "# skip removed files"
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
157 hg remove d1/b
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
158 hg rename d1 d3
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
159 hg status -C
1634
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
160 hg update -C
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
161
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
162 echo "# transitive rename"
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
163 hg rename d1/b d1/bb
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
164 hg rename d1/bb d1/bc
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
165 hg status -C
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
166 hg update -C
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
167
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
168 echo "# transitive rename --after"
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
169 hg rename d1/b d1/bb
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
170 mv d1/bb d1/bc
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
171 hg rename --after d1/bb d1/bc
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
172 hg status -C
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1634
diff changeset
173 hg update -C
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1747
diff changeset
174
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1747
diff changeset
175 echo "# idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b)"
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1747
diff changeset
176 hg rename d1/b d1/bb
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1747
diff changeset
177 echo "some stuff added to d1/bb" >> d1/bb
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1747
diff changeset
178 hg rename d1/bb d1/b
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
179 hg status -C
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1747
diff changeset
180 hg update -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
181
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
182 echo "# check illegal path components"
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
183
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
184 hg rename d1/d11/a1 .hg/foo
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
185 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
186 hg rename d1/d11/a1 ../foo
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
187 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
188
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
189 mv d1/d11/a1 .hg/foo
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
190 hg rename --after d1/d11/a1 .hg/foo
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
191 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
192 hg update -C
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
193 rm .hg/foo
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
194
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
195 hg rename d1/d11/a1 .hg
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
196 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
197 hg rename d1/d11/a1 ..
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
198 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
199
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
200 mv d1/d11/a1 .hg
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
201 hg rename --after d1/d11/a1 .hg
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
202 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
203 hg update -C
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
204 rm .hg/a1
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
205
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
206 (cd d1/d11; hg rename ../../d2/b ../../.hg/foo)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
207 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
208 (cd d1/d11; hg rename ../../d2/b ../../../foo)
4775
438603c1eb6f test-rename: use hg status -C; don't use hg debugstate | grep copy
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1976
diff changeset
209 hg status -C
1976
df8416346bb7 Enable path validation for copy, rename, debugwalk and other canonpath users.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1933
diff changeset
210