comparison tests/test-copies-in-changeset.t @ 43141:52781d57313d

sidedatacopies: introduce a sidedata testcase for test-copies-in-changeset.t For now it is equivalent to the filelog case, but introducing this early helps make the comings changesets clearer. Differential Revision: https://phab.mercurial-scm.org/D6949
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 06 Oct 2019 23:36:51 -0400
parents 57ea0a81a65c
children beed7ce61681
comparison
equal deleted inserted replaced
43140:12b8a2ef8d04 43141:52781d57313d
1 1 #testcases extra sidedata
2
3 #if extra
2 $ cat >> $HGRCPATH << EOF 4 $ cat >> $HGRCPATH << EOF
3 > [experimental] 5 > [experimental]
4 > copies.write-to=changeset-only 6 > copies.write-to=changeset-only
5 > copies.read-from=changeset-only 7 > copies.read-from=changeset-only
6 > [alias] 8 > [alias]
7 > changesetcopies = log -r . -T 'files: {files} 9 > changesetcopies = log -r . -T 'files: {files}
8 > {extras % "{ifcontains("files", key, "{key}: {value}\n")}"} 10 > {extras % "{ifcontains("files", key, "{key}: {value}\n")}"}
9 > {extras % "{ifcontains("copies", key, "{key}: {value}\n")}"}' 11 > {extras % "{ifcontains("copies", key, "{key}: {value}\n")}"}'
12 > EOF
13 #endif
14
15 #if sidedata
16 $ cat >> $HGRCPATH << EOF
17 > [format]
18 > exp-use-copies-side-data-changeset = yes
19 > EOF
20 #endif
21
22 $ cat >> $HGRCPATH << EOF
23 > [alias]
10 > showcopies = log -r . -T '{file_copies % "{source} -> {name}\n"}' 24 > showcopies = log -r . -T '{file_copies % "{source} -> {name}\n"}'
11 > [extensions] 25 > [extensions]
12 > rebase = 26 > rebase =
13 > split = 27 > split =
14 > EOF 28 > EOF
15 29
16 Check that copies are recorded correctly 30 Check that copies are recorded correctly
17 31
18 $ hg init repo 32 $ hg init repo
19 $ cd repo 33 $ cd repo
34 #if sidedata
35 $ hg debugformat -v
36 format-variant repo config default
37 fncache: yes yes yes
38 dotencode: yes yes yes
39 generaldelta: yes yes yes
40 sparserevlog: yes yes yes
41 sidedata: yes yes no
42 copies-sdc: yes yes no
43 plain-cl-delta: yes yes yes
44 compression: zlib zlib zlib
45 compression-level: default default default
46 #else
47 $ hg debugformat -v
48 format-variant repo config default
49 fncache: yes yes yes
50 dotencode: yes yes yes
51 generaldelta: yes yes yes
52 sparserevlog: yes yes yes
53 sidedata: no no no
54 copies-sdc: no no no
55 plain-cl-delta: yes yes yes
56 compression: zlib zlib zlib
57 compression-level: default default default
58 #endif
20 $ echo a > a 59 $ echo a > a
21 $ hg add a 60 $ hg add a
22 $ hg ci -m initial 61 $ hg ci -m initial
23 $ hg cp a b 62 $ hg cp a b
24 $ hg cp a c 63 $ hg cp a c
25 $ hg cp a d 64 $ hg cp a d
26 $ hg ci -m 'copy a to b, c, and d' 65 $ hg ci -m 'copy a to b, c, and d'
66
67 #if extra
68
27 $ hg changesetcopies 69 $ hg changesetcopies
28 files: b c d 70 files: b c d
29 filesadded: 0 71 filesadded: 0
30 1 72 1
31 2 73 2
32 74
33 p1copies: 0\x00a (esc) 75 p1copies: 0\x00a (esc)
34 1\x00a (esc) 76 1\x00a (esc)
35 2\x00a (esc) 77 2\x00a (esc)
78
79 #endif
80
36 $ hg showcopies 81 $ hg showcopies
37 a -> b 82 a -> b
38 a -> c 83 a -> c
39 a -> d 84 a -> d
85
86 #if extra
87
40 $ hg showcopies --config experimental.copies.read-from=compatibility 88 $ hg showcopies --config experimental.copies.read-from=compatibility
41 a -> b 89 a -> b
42 a -> c 90 a -> c
43 a -> d 91 a -> d
44 $ hg showcopies --config experimental.copies.read-from=filelog-only 92 $ hg showcopies --config experimental.copies.read-from=filelog-only
45 93
94 #endif
95
46 Check that renames are recorded correctly 96 Check that renames are recorded correctly
47 97
48 $ hg mv b b2 98 $ hg mv b b2
49 $ hg ci -m 'rename b to b2' 99 $ hg ci -m 'rename b to b2'
100
101 #if extra
102
50 $ hg changesetcopies 103 $ hg changesetcopies
51 files: b b2 104 files: b b2
52 filesadded: 1 105 filesadded: 1
53 filesremoved: 0 106 filesremoved: 0
54 107
55 p1copies: 1\x00b (esc) 108 p1copies: 1\x00b (esc)
109
110 #endif
111
56 $ hg showcopies 112 $ hg showcopies
57 b -> b2 113 b -> b2
114
58 115
59 Rename onto existing file. This should get recorded in the changeset files list and in the extras, 116 Rename onto existing file. This should get recorded in the changeset files list and in the extras,
60 even though there is no filelog entry. 117 even though there is no filelog entry.
61 118
62 $ hg cp b2 c --force 119 $ hg cp b2 c --force
63 $ hg st --copies 120 $ hg st --copies
64 M c 121 M c
65 b2 122 b2
123
124 #if extra
125
66 $ hg debugindex c 126 $ hg debugindex c
67 rev linkrev nodeid p1 p2 127 rev linkrev nodeid p1 p2
68 0 1 b789fdd96dc2 000000000000 000000000000 128 0 1 b789fdd96dc2 000000000000 000000000000
129
130 #else
131
132 $ hg debugindex c
133 rev linkrev nodeid p1 p2
134 0 1 37d9b5d994ea 000000000000 000000000000
135
136 #endif
137
138
69 $ hg ci -m 'move b onto d' 139 $ hg ci -m 'move b onto d'
140
141 #if extra
142
70 $ hg changesetcopies 143 $ hg changesetcopies
71 files: c 144 files: c
72 145
73 p1copies: 0\x00b2 (esc) 146 p1copies: 0\x00b2 (esc)
147
148 #endif
149
74 $ hg showcopies 150 $ hg showcopies
75 b2 -> c 151 b2 -> c
152
153 #if extra
154
76 $ hg debugindex c 155 $ hg debugindex c
77 rev linkrev nodeid p1 p2 156 rev linkrev nodeid p1 p2
78 0 1 b789fdd96dc2 000000000000 000000000000 157 0 1 b789fdd96dc2 000000000000 000000000000
158
159 #else
160
161 $ hg debugindex c
162 rev linkrev nodeid p1 p2
163 0 1 37d9b5d994ea 000000000000 000000000000
164 1 3 029625640347 000000000000 000000000000
165
166 #endif
79 167
80 Create a merge commit with copying done during merge. 168 Create a merge commit with copying done during merge.
81 169
82 $ hg co 0 170 $ hg co 0
83 0 files updated, 0 files merged, 3 files removed, 0 files unresolved 171 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
94 File 'd' exists only in p2, so 'h' should be from p2 182 File 'd' exists only in p2, so 'h' should be from p2
95 $ hg cp d h 183 $ hg cp d h
96 File 'f' exists only in p1, so 'i' should be from p1 184 File 'f' exists only in p1, so 'i' should be from p1
97 $ hg cp f i 185 $ hg cp f i
98 $ hg ci -m 'merge' 186 $ hg ci -m 'merge'
187
188 #if extra
189
99 $ hg changesetcopies 190 $ hg changesetcopies
100 files: g h i 191 files: g h i
101 filesadded: 0 192 filesadded: 0
102 1 193 1
103 2 194 2
104 195
105 p1copies: 0\x00a (esc) 196 p1copies: 0\x00a (esc)
106 2\x00f (esc) 197 2\x00f (esc)
107 p2copies: 1\x00d (esc) 198 p2copies: 1\x00d (esc)
199
200 #endif
201
108 $ hg showcopies 202 $ hg showcopies
109 a -> g 203 a -> g
110 d -> h 204 d -> h
111 f -> i 205 f -> i
112 206
113 Test writing to both changeset and filelog 207 Test writing to both changeset and filelog
114 208
115 $ hg cp a j 209 $ hg cp a j
210 #if extra
116 $ hg ci -m 'copy a to j' --config experimental.copies.write-to=compatibility 211 $ hg ci -m 'copy a to j' --config experimental.copies.write-to=compatibility
117 $ hg changesetcopies 212 $ hg changesetcopies
118 files: j 213 files: j
119 filesadded: 0 214 filesadded: 0
120 filesremoved: 215 filesremoved:
121 216
122 p1copies: 0\x00a (esc) 217 p1copies: 0\x00a (esc)
123 p2copies: 218 p2copies:
219 #else
220 $ hg ci -m 'copy a to j'
221 #endif
124 $ hg debugdata j 0 222 $ hg debugdata j 0
125 \x01 (esc) 223 \x01 (esc)
126 copy: a 224 copy: a
127 copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 225 copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
128 \x01 (esc) 226 \x01 (esc)
133 a -> j 231 a -> j
134 $ hg showcopies --config experimental.copies.read-from=filelog-only 232 $ hg showcopies --config experimental.copies.read-from=filelog-only
135 a -> j 233 a -> j
136 Existing copy information in the changeset gets removed on amend and writing 234 Existing copy information in the changeset gets removed on amend and writing
137 copy information on to the filelog 235 copy information on to the filelog
236 #if extra
138 $ hg ci --amend -m 'copy a to j, v2' \ 237 $ hg ci --amend -m 'copy a to j, v2' \
139 > --config experimental.copies.write-to=filelog-only 238 > --config experimental.copies.write-to=filelog-only
140 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/dd7bb9581359-a6e6b6d2-amend.hg 239 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob)
141 $ hg changesetcopies 240 $ hg changesetcopies
142 files: j 241 files: j
143 242
243 #else
244 $ hg ci --amend -m 'copy a to j, v2'
245 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob)
246 #endif
144 $ hg showcopies --config experimental.copies.read-from=filelog-only 247 $ hg showcopies --config experimental.copies.read-from=filelog-only
145 a -> j 248 a -> j
146 The entries should be written to extras even if they're empty (so the client 249 The entries should be written to extras even if they're empty (so the client
147 won't have to fall back to reading from filelogs) 250 won't have to fall back to reading from filelogs)
148 $ echo x >> j 251 $ echo x >> j
252 #if extra
149 $ hg ci -m 'modify j' --config experimental.copies.write-to=compatibility 253 $ hg ci -m 'modify j' --config experimental.copies.write-to=compatibility
150 $ hg changesetcopies 254 $ hg changesetcopies
151 files: j 255 files: j
152 filesadded: 256 filesadded:
153 filesremoved: 257 filesremoved:
154 258
155 p1copies: 259 p1copies:
156 p2copies: 260 p2copies:
261 #else
262 $ hg ci -m 'modify j'
263 #endif
157 264
158 Test writing only to filelog 265 Test writing only to filelog
159 266
160 $ hg cp a k 267 $ hg cp a k
268 #if extra
161 $ hg ci -m 'copy a to k' --config experimental.copies.write-to=filelog-only 269 $ hg ci -m 'copy a to k' --config experimental.copies.write-to=filelog-only
270
162 $ hg changesetcopies 271 $ hg changesetcopies
163 files: k 272 files: k
164 273
274 #else
275 $ hg ci -m 'copy a to k'
276 #endif
277
165 $ hg debugdata k 0 278 $ hg debugdata k 0
166 \x01 (esc) 279 \x01 (esc)
167 copy: a 280 copy: a
168 copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 281 copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
169 \x01 (esc) 282 \x01 (esc)
170 a 283 a
171 $ hg showcopies 284 #if extra
285 $ hg showcopies
286
172 $ hg showcopies --config experimental.copies.read-from=compatibility 287 $ hg showcopies --config experimental.copies.read-from=compatibility
173 a -> k 288 a -> k
174 $ hg showcopies --config experimental.copies.read-from=filelog-only 289 $ hg showcopies --config experimental.copies.read-from=filelog-only
175 a -> k 290 a -> k
291 #else
292 $ hg showcopies
293 a -> k
294 #endif
176 295
177 $ cd .. 296 $ cd ..
178 297
179 Test rebasing a commit with copy information 298 Test rebasing a commit with copy information
180 299
186 $ hg ci -m 'modify a' 305 $ hg ci -m 'modify a'
187 $ hg co -q 0 306 $ hg co -q 0
188 $ hg mv a b 307 $ hg mv a b
189 $ hg ci -qm 'rename a to b' 308 $ hg ci -qm 'rename a to b'
190 $ hg rebase -d 1 --config rebase.experimental.inmemory=yes 309 $ hg rebase -d 1 --config rebase.experimental.inmemory=yes
191 rebasing 2:fc7287ac5b9b "rename a to b" (tip) 310 rebasing 2:* "rename a to b" (tip) (glob)
192 merging a and b to b 311 merging a and b to b
193 saved backup bundle to $TESTTMP/rebase-rename/.hg/strip-backup/fc7287ac5b9b-8f2a95ec-rebase.hg 312 saved backup bundle to $TESTTMP/rebase-rename/.hg/strip-backup/*-*-rebase.hg (glob)
194 $ hg st --change . --copies 313 $ hg st --change . --copies
195 A b 314 A b
196 a 315 a
197 R a 316 R a
198 $ cd .. 317 $ cd ..
235 rename from b 354 rename from b
236 rename to c 355 rename to c
237 examine changes to 'b' and 'c'? 356 examine changes to 'b' and 'c'?
238 (enter ? for help) [Ynesfdaq?] y 357 (enter ? for help) [Ynesfdaq?] y
239 358
240 saved backup bundle to $TESTTMP/split/.hg/strip-backup/9a396d463e04-2d9e6864-split.hg 359 saved backup bundle to $TESTTMP/split/.hg/strip-backup/*-*-split.hg (glob)
241 $ cd .. 360 $ cd ..
242 361
243 Test committing half a rename 362 Test committing half a rename
244 363
245 $ hg init partial 364 $ hg init partial