##// END OF EJS Templates
test-tags: enable for Windows...
Adrian Buehlmann -
r16857:1415edd8 default
parent child Browse files
Show More
@@ -1,382 +1,382 b''
1 $ "$TESTDIR/hghave" unix-permissions || exit 80
2
3 1 Helper functions:
4 2
5 3 $ cacheexists() {
6 4 > [ -f .hg/cache/tags ] && echo "tag cache exists" || echo "no tag cache"
7 5 > }
8 6
9 7 $ dumptags() {
10 8 > rev=$1
11 9 > echo "rev $rev: .hgtags:"
12 10 > hg cat -r$rev .hgtags
13 11 > }
14 12
15 13 # XXX need to test that the tag cache works when we strip an old head
16 14 # and add a new one rooted off non-tip: i.e. node and rev of tip are the
17 15 # same, but stuff has changed behind tip.
18 16
19 17 Setup:
20 18
21 19 $ hg init t
22 20 $ cd t
23 21 $ cacheexists
24 22 no tag cache
25 23 $ hg id
26 24 000000000000 tip
27 25 $ cacheexists
28 26 no tag cache
29 27 $ echo a > a
30 28 $ hg add a
31 29 $ hg commit -m "test"
32 30 $ hg co
33 31 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 32 $ hg identify
35 33 acb14030fe0a tip
36 34 $ cacheexists
37 35 tag cache exists
38 36
39 37 Try corrupting the cache
40 38
41 39 $ printf 'a b' > .hg/cache/tags
42 40 $ hg identify
43 41 .hg/cache/tags is corrupt, rebuilding it
44 42 acb14030fe0a tip
45 43 $ cacheexists
46 44 tag cache exists
47 45 $ hg identify
48 46 acb14030fe0a tip
49 47
50 48 Create local tag with long name:
51 49
52 50 $ T=`hg identify --debug --id`
53 51 $ hg tag -l "This is a local tag with a really long name!"
54 52 $ hg tags
55 53 tip 0:acb14030fe0a
56 54 This is a local tag with a really long name! 0:acb14030fe0a
57 55 $ rm .hg/localtags
58 56
59 57 Create a tag behind hg's back:
60 58
61 59 $ echo "$T first" > .hgtags
62 60 $ cat .hgtags
63 61 acb14030fe0a21b60322c440ad2d20cf7685a376 first
64 62 $ hg add .hgtags
65 63 $ hg commit -m "add tags"
66 64 $ hg tags
67 65 tip 1:b9154636be93
68 66 first 0:acb14030fe0a
69 67 $ hg identify
70 68 b9154636be93 tip
71 69
72 70 Repeat with cold tag cache:
73 71
74 72 $ rm -f .hg/cache/tags
75 73 $ hg identify
76 74 b9154636be93 tip
77 75
78 76 And again, but now unable to write tag cache:
79 77
78 #if unix-permissions
80 79 $ rm -f .hg/cache/tags
81 80 $ chmod 555 .hg
82 81 $ hg identify
83 82 b9154636be93 tip
84 83 $ chmod 755 .hg
84 #endif
85 85
86 86 Create a branch:
87 87
88 88 $ echo bb > a
89 89 $ hg status
90 90 M a
91 91 $ hg identify
92 92 b9154636be93+ tip
93 93 $ hg co first
94 94 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
95 95 $ hg id
96 96 acb14030fe0a+ first
97 97 $ hg -v id
98 98 acb14030fe0a+ first
99 99 $ hg status
100 100 M a
101 101 $ echo 1 > b
102 102 $ hg add b
103 103 $ hg commit -m "branch"
104 104 created new head
105 105 $ hg id
106 106 c8edf04160c7 tip
107 107
108 108 Merge the two heads:
109 109
110 110 $ hg merge 1
111 111 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
112 112 (branch merge, don't forget to commit)
113 113 $ hg id
114 114 c8edf04160c7+b9154636be93+ tip
115 115 $ hg status
116 116 M .hgtags
117 117 $ hg commit -m "merge"
118 118
119 119 Create a fake head, make sure tag not visible afterwards:
120 120
121 121 $ cp .hgtags tags
122 122 $ hg tag last
123 123 $ hg rm .hgtags
124 124 $ hg commit -m "remove"
125 125
126 126 $ mv tags .hgtags
127 127 $ hg add .hgtags
128 128 $ hg commit -m "readd"
129 129 $
130 130 $ hg tags
131 131 tip 6:35ff301afafe
132 132 first 0:acb14030fe0a
133 133
134 134 Add invalid tags:
135 135
136 136 $ echo "spam" >> .hgtags
137 137 $ echo >> .hgtags
138 138 $ echo "foo bar" >> .hgtags
139 139 $ echo "a5a5 invalid" >> .hg/localtags
140 140 $ cat .hgtags
141 141 acb14030fe0a21b60322c440ad2d20cf7685a376 first
142 142 spam
143 143
144 144 foo bar
145 145 $ hg commit -m "tags"
146 146
147 147 Report tag parse error on other head:
148 148
149 149 $ hg up 3
150 150 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
151 151 $ echo 'x y' >> .hgtags
152 152 $ hg commit -m "head"
153 153 created new head
154 154
155 155 $ hg tags
156 156 .hgtags@75d9f02dfe28, line 2: cannot parse entry
157 157 .hgtags@75d9f02dfe28, line 4: node 'foo' is not well formed
158 158 .hgtags@c4be69a18c11, line 2: node 'x' is not well formed
159 159 tip 8:c4be69a18c11
160 160 first 0:acb14030fe0a
161 161 $ hg tip
162 162 changeset: 8:c4be69a18c11
163 163 tag: tip
164 164 parent: 3:ac5e980c4dc0
165 165 user: test
166 166 date: Thu Jan 01 00:00:00 1970 +0000
167 167 summary: head
168 168
169 169
170 170 Test tag precedence rules:
171 171
172 172 $ cd ..
173 173 $ hg init t2
174 174 $ cd t2
175 175 $ echo foo > foo
176 176 $ hg add foo
177 177 $ hg ci -m 'add foo' # rev 0
178 178 $ hg tag bar # rev 1
179 179 $ echo >> foo
180 180 $ hg ci -m 'change foo 1' # rev 2
181 181 $ hg up -C 1
182 182 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
183 183 $ hg tag -r 1 -f bar # rev 3
184 184 $ hg up -C 1
185 185 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
186 186 $ echo >> foo
187 187 $ hg ci -m 'change foo 2' # rev 4
188 188 created new head
189 189 $ hg tags
190 190 tip 4:0c192d7d5e6b
191 191 bar 1:78391a272241
192 192
193 193 Repeat in case of cache effects:
194 194
195 195 $ hg tags
196 196 tip 4:0c192d7d5e6b
197 197 bar 1:78391a272241
198 198
199 199 Detailed dump of tag info:
200 200
201 201 $ hg heads -q # expect 4, 3, 2
202 202 4:0c192d7d5e6b
203 203 3:6fa450212aeb
204 204 2:7a94127795a3
205 205 $ dumptags 2
206 206 rev 2: .hgtags:
207 207 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
208 208 $ dumptags 3
209 209 rev 3: .hgtags:
210 210 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
211 211 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
212 212 78391a272241d70354aa14c874552cad6b51bb42 bar
213 213 $ dumptags 4
214 214 rev 4: .hgtags:
215 215 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
216 216
217 217 Dump cache:
218 218
219 219 $ cat .hg/cache/tags
220 220 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
221 221 3 6fa450212aeb2a21ed616a54aea39a4a27894cd7 7d3b718c964ef37b89e550ebdafd5789e76ce1b0
222 222 2 7a94127795a33c10a370c93f731fd9fea0b79af6 0c04f2a8af31de17fab7422878ee5a2dadbc943d
223 223
224 224 78391a272241d70354aa14c874552cad6b51bb42 bar
225 225
226 226 Test tag removal:
227 227
228 228 $ hg tag --remove bar # rev 5
229 229 $ hg tip -vp
230 230 changeset: 5:5f6e8655b1c7
231 231 tag: tip
232 232 user: test
233 233 date: Thu Jan 01 00:00:00 1970 +0000
234 234 files: .hgtags
235 235 description:
236 236 Removed tag bar
237 237
238 238
239 239 diff -r 0c192d7d5e6b -r 5f6e8655b1c7 .hgtags
240 240 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
241 241 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
242 242 @@ -1,1 +1,3 @@
243 243 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
244 244 +78391a272241d70354aa14c874552cad6b51bb42 bar
245 245 +0000000000000000000000000000000000000000 bar
246 246
247 247 $ hg tags
248 248 tip 5:5f6e8655b1c7
249 249 $ hg tags # again, try to expose cache bugs
250 250 tip 5:5f6e8655b1c7
251 251
252 252 Remove nonexistent tag:
253 253
254 254 $ hg tag --remove foobar
255 255 abort: tag 'foobar' does not exist
256 256 [255]
257 257 $ hg tip
258 258 changeset: 5:5f6e8655b1c7
259 259 tag: tip
260 260 user: test
261 261 date: Thu Jan 01 00:00:00 1970 +0000
262 262 summary: Removed tag bar
263 263
264 264
265 265 Undo a tag with rollback:
266 266
267 267 $ hg rollback # destroy rev 5 (restore bar)
268 268 repository tip rolled back to revision 4 (undo commit)
269 269 working directory now based on revision 4
270 270 $ hg tags
271 271 tip 4:0c192d7d5e6b
272 272 bar 1:78391a272241
273 273 $ hg tags
274 274 tip 4:0c192d7d5e6b
275 275 bar 1:78391a272241
276 276
277 277 Test tag rank:
278 278
279 279 $ cd ..
280 280 $ hg init t3
281 281 $ cd t3
282 282 $ echo foo > foo
283 283 $ hg add foo
284 284 $ hg ci -m 'add foo' # rev 0
285 285 $ hg tag -f bar # rev 1 bar -> 0
286 286 $ hg tag -f bar # rev 2 bar -> 1
287 287 $ hg tag -fr 0 bar # rev 3 bar -> 0
288 288 $ hg tag -fr 1 bar # rev 4 bar -> 1
289 289 $ hg tag -fr 0 bar # rev 5 bar -> 0
290 290 $ hg tags
291 291 tip 5:85f05169d91d
292 292 bar 0:bbd179dfa0a7
293 293 $ hg co 3
294 294 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
295 295 $ echo barbar > foo
296 296 $ hg ci -m 'change foo' # rev 6
297 297 created new head
298 298 $ hg tags
299 299 tip 6:735c3ca72986
300 300 bar 0:bbd179dfa0a7
301 301
302 302 Don't allow moving tag without -f:
303 303
304 304 $ hg tag -r 3 bar
305 305 abort: tag 'bar' already exists (use -f to force)
306 306 [255]
307 307 $ hg tags
308 308 tip 6:735c3ca72986
309 309 bar 0:bbd179dfa0a7
310 310
311 311 Strip 1: expose an old head:
312 312
313 313 $ hg --config extensions.mq= strip 5
314 314 saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
315 315 $ hg tags # partly stale cache
316 316 tip 5:735c3ca72986
317 317 bar 1:78391a272241
318 318 $ hg tags # up-to-date cache
319 319 tip 5:735c3ca72986
320 320 bar 1:78391a272241
321 321
322 322 Strip 2: destroy whole branch, no old head exposed
323 323
324 324 $ hg --config extensions.mq= strip 4
325 325 saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
326 326 $ hg tags # partly stale
327 327 tip 4:735c3ca72986
328 328 bar 0:bbd179dfa0a7
329 329 $ rm -f .hg/cache/tags
330 330 $ hg tags # cold cache
331 331 tip 4:735c3ca72986
332 332 bar 0:bbd179dfa0a7
333 333
334 334 Test tag rank with 3 heads:
335 335
336 336 $ cd ..
337 337 $ hg init t4
338 338 $ cd t4
339 339 $ echo foo > foo
340 340 $ hg add
341 341 adding foo
342 342 $ hg ci -m 'add foo' # rev 0
343 343 $ hg tag bar # rev 1 bar -> 0
344 344 $ hg tag -f bar # rev 2 bar -> 1
345 345 $ hg up -qC 0
346 346 $ hg tag -fr 2 bar # rev 3 bar -> 2
347 347 $ hg tags
348 348 tip 3:197c21bbbf2c
349 349 bar 2:6fa450212aeb
350 350 $ hg up -qC 0
351 351 $ hg tag -m 'retag rev 0' -fr 0 bar # rev 4 bar -> 0, but bar stays at 2
352 352
353 353 Bar should still point to rev 2:
354 354
355 355 $ hg tags
356 356 tip 4:3b4b14ed0202
357 357 bar 2:6fa450212aeb
358 358
359 359 Test that removing global/local tags does not get confused when trying
360 360 to remove a tag of type X which actually only exists as a type Y:
361 361
362 362 $ cd ..
363 363 $ hg init t5
364 364 $ cd t5
365 365 $ echo foo > foo
366 366 $ hg add
367 367 adding foo
368 368 $ hg ci -m 'add foo' # rev 0
369 369
370 370 $ hg tag -r 0 -l localtag
371 371 $ hg tag --remove localtag
372 372 abort: tag 'localtag' is not a global tag
373 373 [255]
374 374 $
375 375 $ hg tag -r 0 globaltag
376 376 $ hg tag --remove -l globaltag
377 377 abort: tag 'globaltag' is not a local tag
378 378 [255]
379 379 $ hg tags -v
380 380 tip 1:a0b6fe111088
381 381 localtag 0:bbd179dfa0a7 local
382 382 globaltag 0:bbd179dfa0a7
General Comments 0
You need to be logged in to leave comments. Login now