##// END OF EJS Templates
test-revert: add case with untracked files with reverted content...
Pierre-Yves David -
r22142:e1a69b0a default
parent child Browse files
Show More
@@ -1,999 +1,1066 b''
1 $ hg init repo
1 $ hg init repo
2 $ cd repo
2 $ cd repo
3 $ echo 123 > a
3 $ echo 123 > a
4 $ echo 123 > c
4 $ echo 123 > c
5 $ echo 123 > e
5 $ echo 123 > e
6 $ hg add a c e
6 $ hg add a c e
7 $ hg commit -m "first" a c e
7 $ hg commit -m "first" a c e
8
8
9 nothing changed
9 nothing changed
10
10
11 $ hg revert
11 $ hg revert
12 abort: no files or directories specified
12 abort: no files or directories specified
13 (use --all to revert all files)
13 (use --all to revert all files)
14 [255]
14 [255]
15 $ hg revert --all
15 $ hg revert --all
16
16
17 Introduce some changes and revert them
17 Introduce some changes and revert them
18 --------------------------------------
18 --------------------------------------
19
19
20 $ echo 123 > b
20 $ echo 123 > b
21
21
22 $ hg status
22 $ hg status
23 ? b
23 ? b
24 $ echo 12 > c
24 $ echo 12 > c
25
25
26 $ hg status
26 $ hg status
27 M c
27 M c
28 ? b
28 ? b
29 $ hg add b
29 $ hg add b
30
30
31 $ hg status
31 $ hg status
32 M c
32 M c
33 A b
33 A b
34 $ hg rm a
34 $ hg rm a
35
35
36 $ hg status
36 $ hg status
37 M c
37 M c
38 A b
38 A b
39 R a
39 R a
40
40
41 revert removal of a file
41 revert removal of a file
42
42
43 $ hg revert a
43 $ hg revert a
44 $ hg status
44 $ hg status
45 M c
45 M c
46 A b
46 A b
47
47
48 revert addition of a file
48 revert addition of a file
49
49
50 $ hg revert b
50 $ hg revert b
51 $ hg status
51 $ hg status
52 M c
52 M c
53 ? b
53 ? b
54
54
55 revert modification of a file (--no-backup)
55 revert modification of a file (--no-backup)
56
56
57 $ hg revert --no-backup c
57 $ hg revert --no-backup c
58 $ hg status
58 $ hg status
59 ? b
59 ? b
60
60
61 revert deletion (! status) of a added file
61 revert deletion (! status) of a added file
62 ------------------------------------------
62 ------------------------------------------
63
63
64 $ hg add b
64 $ hg add b
65
65
66 $ hg status b
66 $ hg status b
67 A b
67 A b
68 $ rm b
68 $ rm b
69 $ hg status b
69 $ hg status b
70 ! b
70 ! b
71 $ hg revert -v b
71 $ hg revert -v b
72 forgetting b
72 forgetting b
73 $ hg status b
73 $ hg status b
74 b: * (glob)
74 b: * (glob)
75
75
76 $ ls
76 $ ls
77 a
77 a
78 c
78 c
79 e
79 e
80
80
81 Test creation of backup (.orig) files
81 Test creation of backup (.orig) files
82 -------------------------------------
82 -------------------------------------
83
83
84 $ echo z > e
84 $ echo z > e
85 $ hg revert --all -v
85 $ hg revert --all -v
86 saving current version of e as e.orig
86 saving current version of e as e.orig
87 reverting e
87 reverting e
88
88
89 revert on clean file (no change)
89 revert on clean file (no change)
90 --------------------------------
90 --------------------------------
91
91
92 $ hg revert a
92 $ hg revert a
93 no changes needed to a
93 no changes needed to a
94
94
95 revert on an untracked file
95 revert on an untracked file
96 ---------------------------
96 ---------------------------
97
97
98 $ echo q > q
98 $ echo q > q
99 $ hg revert q
99 $ hg revert q
100 file not managed: q
100 file not managed: q
101 $ rm q
101 $ rm q
102
102
103 revert on file that does not exists
103 revert on file that does not exists
104 -----------------------------------
104 -----------------------------------
105
105
106 $ hg revert notfound
106 $ hg revert notfound
107 notfound: no such file in rev 334a9e57682c
107 notfound: no such file in rev 334a9e57682c
108 $ touch d
108 $ touch d
109 $ hg add d
109 $ hg add d
110 $ hg rm a
110 $ hg rm a
111 $ hg commit -m "second"
111 $ hg commit -m "second"
112 $ echo z > z
112 $ echo z > z
113 $ hg add z
113 $ hg add z
114 $ hg st
114 $ hg st
115 A z
115 A z
116 ? e.orig
116 ? e.orig
117
117
118 revert to another revision (--rev)
118 revert to another revision (--rev)
119 ----------------------------------
119 ----------------------------------
120
120
121 $ hg revert --all -r0
121 $ hg revert --all -r0
122 adding a
122 adding a
123 removing d
123 removing d
124 forgetting z
124 forgetting z
125
125
126 revert explicitly to parent (--rev)
126 revert explicitly to parent (--rev)
127 -----------------------------------
127 -----------------------------------
128
128
129 $ hg revert --all -rtip
129 $ hg revert --all -rtip
130 forgetting a
130 forgetting a
131 undeleting d
131 undeleting d
132 $ rm a *.orig
132 $ rm a *.orig
133
133
134 revert to another revision (--rev) and exact match
134 revert to another revision (--rev) and exact match
135 --------------------------------------------------
135 --------------------------------------------------
136
136
137 exact match are more silent
137 exact match are more silent
138
138
139 $ hg revert -r0 a
139 $ hg revert -r0 a
140 $ hg st a
140 $ hg st a
141 A a
141 A a
142 $ hg rm d
142 $ hg rm d
143 $ hg st d
143 $ hg st d
144 R d
144 R d
145
145
146 should silently keep d removed
146 should silently keep d removed
147
147
148 $ hg revert -r0 d
148 $ hg revert -r0 d
149 $ hg st d
149 $ hg st d
150 R d
150 R d
151
151
152 $ hg update -C
152 $ hg update -C
153 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
153 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
154
154
155 revert of exec bit
155 revert of exec bit
156 ------------------
156 ------------------
157
157
158 #if execbit
158 #if execbit
159 $ chmod +x c
159 $ chmod +x c
160 $ hg revert --all
160 $ hg revert --all
161 reverting c
161 reverting c
162
162
163 $ test -x c || echo non-executable
163 $ test -x c || echo non-executable
164 non-executable
164 non-executable
165
165
166 $ chmod +x c
166 $ chmod +x c
167 $ hg commit -m exe
167 $ hg commit -m exe
168
168
169 $ chmod -x c
169 $ chmod -x c
170 $ hg revert --all
170 $ hg revert --all
171 reverting c
171 reverting c
172
172
173 $ test -x c && echo executable
173 $ test -x c && echo executable
174 executable
174 executable
175 #endif
175 #endif
176
176
177 $ cd ..
177 $ cd ..
178
178
179
179
180 Issue241: update and revert produces inconsistent repositories
180 Issue241: update and revert produces inconsistent repositories
181 --------------------------------------------------------------
181 --------------------------------------------------------------
182
182
183 $ hg init a
183 $ hg init a
184 $ cd a
184 $ cd a
185 $ echo a >> a
185 $ echo a >> a
186 $ hg commit -A -d '1 0' -m a
186 $ hg commit -A -d '1 0' -m a
187 adding a
187 adding a
188 $ echo a >> a
188 $ echo a >> a
189 $ hg commit -d '2 0' -m a
189 $ hg commit -d '2 0' -m a
190 $ hg update 0
190 $ hg update 0
191 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
191 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
192 $ mkdir b
192 $ mkdir b
193 $ echo b > b/b
193 $ echo b > b/b
194
194
195 call `hg revert` with no file specified
195 call `hg revert` with no file specified
196 ---------------------------------------
196 ---------------------------------------
197
197
198 $ hg revert -rtip
198 $ hg revert -rtip
199 abort: no files or directories specified
199 abort: no files or directories specified
200 (use --all to revert all files, or 'hg update 1' to update)
200 (use --all to revert all files, or 'hg update 1' to update)
201 [255]
201 [255]
202
202
203 call `hg revert` with --all
203 call `hg revert` with --all
204 ---------------------------
204 ---------------------------
205
205
206 $ hg revert --all -rtip
206 $ hg revert --all -rtip
207 reverting a
207 reverting a
208
208
209
209
210 Issue332: confusing message when reverting directory
210 Issue332: confusing message when reverting directory
211 ----------------------------------------------------
211 ----------------------------------------------------
212
212
213 $ hg ci -A -m b
213 $ hg ci -A -m b
214 adding b/b
214 adding b/b
215 created new head
215 created new head
216 $ echo foobar > b/b
216 $ echo foobar > b/b
217 $ mkdir newdir
217 $ mkdir newdir
218 $ echo foo > newdir/newfile
218 $ echo foo > newdir/newfile
219 $ hg add newdir/newfile
219 $ hg add newdir/newfile
220 $ hg revert b newdir
220 $ hg revert b newdir
221 reverting b/b (glob)
221 reverting b/b (glob)
222 forgetting newdir/newfile (glob)
222 forgetting newdir/newfile (glob)
223 $ echo foobar > b/b
223 $ echo foobar > b/b
224 $ hg revert .
224 $ hg revert .
225 reverting b/b (glob)
225 reverting b/b (glob)
226
226
227
227
228 reverting a rename target should revert the source
228 reverting a rename target should revert the source
229 --------------------------------------------------
229 --------------------------------------------------
230
230
231 $ hg mv a newa
231 $ hg mv a newa
232 $ hg revert newa
232 $ hg revert newa
233 $ hg st a newa
233 $ hg st a newa
234 ? newa
234 ? newa
235
235
236 $ cd ..
236 $ cd ..
237
237
238 $ hg init ignored
238 $ hg init ignored
239 $ cd ignored
239 $ cd ignored
240 $ echo '^ignored$' > .hgignore
240 $ echo '^ignored$' > .hgignore
241 $ echo '^ignoreddir$' >> .hgignore
241 $ echo '^ignoreddir$' >> .hgignore
242 $ echo '^removed$' >> .hgignore
242 $ echo '^removed$' >> .hgignore
243
243
244 $ mkdir ignoreddir
244 $ mkdir ignoreddir
245 $ touch ignoreddir/file
245 $ touch ignoreddir/file
246 $ touch ignoreddir/removed
246 $ touch ignoreddir/removed
247 $ touch ignored
247 $ touch ignored
248 $ touch removed
248 $ touch removed
249
249
250 4 ignored files (we will add/commit everything)
250 4 ignored files (we will add/commit everything)
251
251
252 $ hg st -A -X .hgignore
252 $ hg st -A -X .hgignore
253 I ignored
253 I ignored
254 I ignoreddir/file
254 I ignoreddir/file
255 I ignoreddir/removed
255 I ignoreddir/removed
256 I removed
256 I removed
257 $ hg ci -qAm 'add files' ignored ignoreddir/file ignoreddir/removed removed
257 $ hg ci -qAm 'add files' ignored ignoreddir/file ignoreddir/removed removed
258
258
259 $ echo >> ignored
259 $ echo >> ignored
260 $ echo >> ignoreddir/file
260 $ echo >> ignoreddir/file
261 $ hg rm removed ignoreddir/removed
261 $ hg rm removed ignoreddir/removed
262
262
263 should revert ignored* and undelete *removed
263 should revert ignored* and undelete *removed
264 --------------------------------------------
264 --------------------------------------------
265
265
266 $ hg revert -a --no-backup
266 $ hg revert -a --no-backup
267 reverting ignored
267 reverting ignored
268 reverting ignoreddir/file (glob)
268 reverting ignoreddir/file (glob)
269 undeleting ignoreddir/removed (glob)
269 undeleting ignoreddir/removed (glob)
270 undeleting removed
270 undeleting removed
271 $ hg st -mardi
271 $ hg st -mardi
272
272
273 $ hg up -qC
273 $ hg up -qC
274 $ echo >> ignored
274 $ echo >> ignored
275 $ hg rm removed
275 $ hg rm removed
276
276
277 should silently revert the named files
277 should silently revert the named files
278 --------------------------------------
278 --------------------------------------
279
279
280 $ hg revert --no-backup ignored removed
280 $ hg revert --no-backup ignored removed
281 $ hg st -mardi
281 $ hg st -mardi
282
282
283 Reverting copy (issue3920)
283 Reverting copy (issue3920)
284 --------------------------
284 --------------------------
285
285
286 someone set up us the copies
286 someone set up us the copies
287
287
288 $ rm .hgignore
288 $ rm .hgignore
289 $ hg update -C
289 $ hg update -C
290 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
290 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
291 $ hg mv ignored allyour
291 $ hg mv ignored allyour
292 $ hg copy removed base
292 $ hg copy removed base
293 $ hg commit -m rename
293 $ hg commit -m rename
294
294
295 copies and renames, you have no chance to survive make your time (issue3920)
295 copies and renames, you have no chance to survive make your time (issue3920)
296
296
297 $ hg update '.^'
297 $ hg update '.^'
298 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
298 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
299 $ hg revert -rtip -a
299 $ hg revert -rtip -a
300 adding allyour
300 adding allyour
301 adding base
301 adding base
302 removing ignored
302 removing ignored
303 $ hg status -C
303 $ hg status -C
304 A allyour
304 A allyour
305 ignored
305 ignored
306 A base
306 A base
307 removed
307 removed
308 R ignored
308 R ignored
309
309
310 Test revert of a file added by one side of the merge
310 Test revert of a file added by one side of the merge
311 ====================================================
311 ====================================================
312
312
313 remove any pending change
313 remove any pending change
314
314
315 $ hg revert --all
315 $ hg revert --all
316 forgetting allyour
316 forgetting allyour
317 forgetting base
317 forgetting base
318 undeleting ignored
318 undeleting ignored
319 $ hg purge --all --config extensions.purge=
319 $ hg purge --all --config extensions.purge=
320
320
321 Adds a new commit
321 Adds a new commit
322
322
323 $ echo foo > newadd
323 $ echo foo > newadd
324 $ hg add newadd
324 $ hg add newadd
325 $ hg commit -m 'other adds'
325 $ hg commit -m 'other adds'
326 created new head
326 created new head
327
327
328
328
329 merge it with the other head
329 merge it with the other head
330
330
331 $ hg merge # merge 1 into 2
331 $ hg merge # merge 1 into 2
332 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
332 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
333 (branch merge, don't forget to commit)
333 (branch merge, don't forget to commit)
334 $ hg summary
334 $ hg summary
335 parent: 2:b8ec310b2d4e tip
335 parent: 2:b8ec310b2d4e tip
336 other adds
336 other adds
337 parent: 1:f6180deb8fbe
337 parent: 1:f6180deb8fbe
338 rename
338 rename
339 branch: default
339 branch: default
340 commit: 2 modified, 1 removed (merge)
340 commit: 2 modified, 1 removed (merge)
341 update: (current)
341 update: (current)
342
342
343 clarifies who added what
343 clarifies who added what
344
344
345 $ hg status
345 $ hg status
346 M allyour
346 M allyour
347 M base
347 M base
348 R ignored
348 R ignored
349 $ hg status --change 'p1()'
349 $ hg status --change 'p1()'
350 A newadd
350 A newadd
351 $ hg status --change 'p2()'
351 $ hg status --change 'p2()'
352 A allyour
352 A allyour
353 A base
353 A base
354 R ignored
354 R ignored
355
355
356 revert file added by p1() to p1() state
356 revert file added by p1() to p1() state
357 -----------------------------------------
357 -----------------------------------------
358
358
359 $ hg revert -r 'p1()' 'glob:newad?'
359 $ hg revert -r 'p1()' 'glob:newad?'
360 $ hg status
360 $ hg status
361 M allyour
361 M allyour
362 M base
362 M base
363 R ignored
363 R ignored
364
364
365 revert file added by p1() to p2() state
365 revert file added by p1() to p2() state
366 ------------------------------------------
366 ------------------------------------------
367
367
368 $ hg revert -r 'p2()' 'glob:newad?'
368 $ hg revert -r 'p2()' 'glob:newad?'
369 removing newadd
369 removing newadd
370 $ hg status
370 $ hg status
371 M allyour
371 M allyour
372 M base
372 M base
373 R ignored
373 R ignored
374 R newadd
374 R newadd
375
375
376 revert file added by p2() to p2() state
376 revert file added by p2() to p2() state
377 ------------------------------------------
377 ------------------------------------------
378
378
379 $ hg revert -r 'p2()' 'glob:allyou?'
379 $ hg revert -r 'p2()' 'glob:allyou?'
380 $ hg status
380 $ hg status
381 M allyour
381 M allyour
382 M base
382 M base
383 R ignored
383 R ignored
384 R newadd
384 R newadd
385
385
386 revert file added by p2() to p1() state
386 revert file added by p2() to p1() state
387 ------------------------------------------
387 ------------------------------------------
388
388
389 $ hg revert -r 'p1()' 'glob:allyou?'
389 $ hg revert -r 'p1()' 'glob:allyou?'
390 removing allyour
390 removing allyour
391 $ hg status
391 $ hg status
392 M base
392 M base
393 R allyour
393 R allyour
394 R ignored
394 R ignored
395 R newadd
395 R newadd
396
396
397 Systematic behavior validation of most possible cases
397 Systematic behavior validation of most possible cases
398 =====================================================
398 =====================================================
399
399
400 This section tests most of the possible combinations of working directory
400 This section tests most of the possible combinations of working directory
401 changes and inter-revision changes. The number of possible cases is significant
401 changes and inter-revision changes. The number of possible cases is significant
402 but they all have a slighly different handling. So this section commits to
402 but they all have a slighly different handling. So this section commits to
403 generating and testing all of them to allow safe refactoring of the revert code.
403 generating and testing all of them to allow safe refactoring of the revert code.
404
404
405 A python script is used to generate a file history for each combination of
405 A python script is used to generate a file history for each combination of
406 changes between, on one side the working directory and its parent and on
406 changes between, on one side the working directory and its parent and on
407 the other side, changes between a revert target (--rev) and working directory
407 the other side, changes between a revert target (--rev) and working directory
408 parent. The three states generated are:
408 parent. The three states generated are:
409
409
410 - a "base" revision
410 - a "base" revision
411 - a "parent" revision
411 - a "parent" revision
412 - the working directory (based on "parent")
412 - the working directory (based on "parent")
413
413
414 The file generated have names of the form:
414 The file generated have names of the form:
415
415
416 <changeset-state>_<working-copy-state>
416 <changeset-state>_<working-copy-state>
417
417
418 Here, "changeset-state" conveys the state in "base" and "parent" (or the change
418 Here, "changeset-state" conveys the state in "base" and "parent" (or the change
419 that happen between them), "working-copy-state" is self explanatory.
419 that happen between them), "working-copy-state" is self explanatory.
420
420
421 All known states are not tested yet. See inline documentation for details.
421 All known states are not tested yet. See inline documentation for details.
422 Special cases from merge and rename are not tested by this section.
422 Special cases from merge and rename are not tested by this section.
423
423
424 There are also multiple cases where the current revert implementation is known to
424 There are also multiple cases where the current revert implementation is known to
425 slightly misbehave.
425 slightly misbehave.
426
426
427 Write the python script to disk
427 Write the python script to disk
428 -------------------------------
428 -------------------------------
429
429
430 $ cat << EOF > gen-revert-cases.py
430 $ cat << EOF > gen-revert-cases.py
431 > # generate proper file state to test revert behavior
431 > # generate proper file state to test revert behavior
432 > import sys
432 > import sys
433 > import os
433 > import os
434 >
434 >
435 > # content of the file in "base" and "parent"
435 > # content of the file in "base" and "parent"
436 > # None means no file at all
436 > # None means no file at all
437 > ctxcontent = {
437 > ctxcontent = {
438 > # clean: no change from base to parent
438 > # clean: no change from base to parent
439 > 'clean': ['base', 'base'],
439 > 'clean': ['base', 'base'],
440 > # modified: file content change from base to parent
440 > # modified: file content change from base to parent
441 > 'modified': ['base', 'parent'],
441 > 'modified': ['base', 'parent'],
442 > # added: file is missing from base and added in parent
442 > # added: file is missing from base and added in parent
443 > 'added': [None, 'parent'],
443 > 'added': [None, 'parent'],
444 > # removed: file exist in base but is removed from parent
444 > # removed: file exist in base but is removed from parent
445 > 'removed': ['base', None],
445 > 'removed': ['base', None],
446 > # file exist neither in base not in parent
446 > # file exist neither in base not in parent
447 > 'missing': [None, None],
447 > 'missing': [None, None],
448 > }
448 > }
449 >
449 >
450 > # content of file in working copy
450 > # content of file in working copy
451 > wccontent = {
451 > wccontent = {
452 > # clean: wc content is the same as parent
452 > # clean: wc content is the same as parent
453 > 'clean': lambda cc: cc[1],
453 > 'clean': lambda cc: cc[1],
454 > # revert: wc content is the same as base
454 > # revert: wc content is the same as base
455 > 'revert': lambda cc: cc[0],
455 > 'revert': lambda cc: cc[0],
456 > # wc: file exist with a content different from base and parent
456 > # wc: file exist with a content different from base and parent
457 > 'wc': lambda cc: 'wc',
457 > 'wc': lambda cc: 'wc',
458 > # removed: file is missing and marked as untracked
458 > # removed: file is missing and marked as untracked
459 > 'removed': lambda cc: None,
459 > 'removed': lambda cc: None,
460 > }
460 > }
461 > # untracked-X is a version of X where the file is not tracked (? unknown)
461 > # untracked-X is a version of X where the file is not tracked (? unknown)
462 > wccontent['untracked-clean'] = wccontent['clean']
462 > wccontent['untracked-clean'] = wccontent['clean']
463 > wccontent['untracked-revert'] = wccontent['revert']
463 >
464 >
464 > # build the combination of possible states
465 > # build the combination of possible states
465 > combination = []
466 > combination = []
466 > for ctxkey in ctxcontent:
467 > for ctxkey in ctxcontent:
467 > for wckey in wccontent:
468 > for wckey in wccontent:
468 > filename = "%s_%s" % (ctxkey, wckey)
469 > filename = "%s_%s" % (ctxkey, wckey)
469 > combination.append((filename, ctxkey, wckey))
470 > combination.append((filename, ctxkey, wckey))
470 >
471 >
471 > # make sure we have stable output
472 > # make sure we have stable output
472 > combination.sort()
473 > combination.sort()
473 >
474 >
474 > # retrieve the state we must generate
475 > # retrieve the state we must generate
475 > target = sys.argv[1]
476 > target = sys.argv[1]
476 >
477 >
477 > # compute file content
478 > # compute file content
478 > content = []
479 > content = []
479 > for filename, ctxkey, wckey in combination:
480 > for filename, ctxkey, wckey in combination:
480 > cc = ctxcontent[ctxkey]
481 > cc = ctxcontent[ctxkey]
481 > if target == 'filelist':
482 > if target == 'filelist':
482 > print filename
483 > print filename
483 > elif target == 'base':
484 > elif target == 'base':
484 > content.append((filename, cc[0]))
485 > content.append((filename, cc[0]))
485 > elif target == 'parent':
486 > elif target == 'parent':
486 > content.append((filename, cc[1]))
487 > content.append((filename, cc[1]))
487 > elif target == 'wc':
488 > elif target == 'wc':
488 > content.append((filename, wccontent[wckey](cc)))
489 > content.append((filename, wccontent[wckey](cc)))
489 > else:
490 > else:
490 > print >> sys.stderr, "unknown target:", target
491 > print >> sys.stderr, "unknown target:", target
491 > sys.exit(1)
492 > sys.exit(1)
492 >
493 >
493 > # write actual content
494 > # write actual content
494 > for filename, data in content:
495 > for filename, data in content:
495 > if data is not None:
496 > if data is not None:
496 > f = open(filename, 'w')
497 > f = open(filename, 'w')
497 > f.write(data + '\n')
498 > f.write(data + '\n')
498 > f.close()
499 > f.close()
499 > elif os.path.exists(filename):
500 > elif os.path.exists(filename):
500 > os.remove(filename)
501 > os.remove(filename)
501 > EOF
502 > EOF
502
503
503 check list of planned files
504 check list of planned files
504
505
505 $ python gen-revert-cases.py filelist
506 $ python gen-revert-cases.py filelist
506 added_clean
507 added_clean
507 added_removed
508 added_removed
508 added_revert
509 added_revert
509 added_untracked-clean
510 added_untracked-clean
511 added_untracked-revert
510 added_wc
512 added_wc
511 clean_clean
513 clean_clean
512 clean_removed
514 clean_removed
513 clean_revert
515 clean_revert
514 clean_untracked-clean
516 clean_untracked-clean
517 clean_untracked-revert
515 clean_wc
518 clean_wc
516 missing_clean
519 missing_clean
517 missing_removed
520 missing_removed
518 missing_revert
521 missing_revert
519 missing_untracked-clean
522 missing_untracked-clean
523 missing_untracked-revert
520 missing_wc
524 missing_wc
521 modified_clean
525 modified_clean
522 modified_removed
526 modified_removed
523 modified_revert
527 modified_revert
524 modified_untracked-clean
528 modified_untracked-clean
529 modified_untracked-revert
525 modified_wc
530 modified_wc
526 removed_clean
531 removed_clean
527 removed_removed
532 removed_removed
528 removed_revert
533 removed_revert
529 removed_untracked-clean
534 removed_untracked-clean
535 removed_untracked-revert
530 removed_wc
536 removed_wc
531
537
532 Script to make a simple text version of the content
538 Script to make a simple text version of the content
533 ---------------------------------------------------
539 ---------------------------------------------------
534
540
535 $ cat << EOF >> dircontent.py
541 $ cat << EOF >> dircontent.py
536 > # generate a simple text view of the directory for easy comparison
542 > # generate a simple text view of the directory for easy comparison
537 > import os
543 > import os
538 > files = os.listdir('.')
544 > files = os.listdir('.')
539 > files.sort()
545 > files.sort()
540 > for filename in files:
546 > for filename in files:
541 > if os.path.isdir(filename):
547 > if os.path.isdir(filename):
542 > continue
548 > continue
543 > content = open(filename).read()
549 > content = open(filename).read()
544 > print '%-6s %s' % (content.strip(), filename)
550 > print '%-6s %s' % (content.strip(), filename)
545 > EOF
551 > EOF
546
552
547 Generate appropriate repo state
553 Generate appropriate repo state
548 -------------------------------
554 -------------------------------
549
555
550 $ hg init revert-ref
556 $ hg init revert-ref
551 $ cd revert-ref
557 $ cd revert-ref
552
558
553 Generate base changeset
559 Generate base changeset
554
560
555 $ python ../gen-revert-cases.py base
561 $ python ../gen-revert-cases.py base
556 $ hg addremove --similarity 0
562 $ hg addremove --similarity 0
557 adding clean_clean
563 adding clean_clean
558 adding clean_removed
564 adding clean_removed
559 adding clean_revert
565 adding clean_revert
560 adding clean_untracked-clean
566 adding clean_untracked-clean
567 adding clean_untracked-revert
561 adding clean_wc
568 adding clean_wc
562 adding modified_clean
569 adding modified_clean
563 adding modified_removed
570 adding modified_removed
564 adding modified_revert
571 adding modified_revert
565 adding modified_untracked-clean
572 adding modified_untracked-clean
573 adding modified_untracked-revert
566 adding modified_wc
574 adding modified_wc
567 adding removed_clean
575 adding removed_clean
568 adding removed_removed
576 adding removed_removed
569 adding removed_revert
577 adding removed_revert
570 adding removed_untracked-clean
578 adding removed_untracked-clean
579 adding removed_untracked-revert
571 adding removed_wc
580 adding removed_wc
572 $ hg status
581 $ hg status
573 A clean_clean
582 A clean_clean
574 A clean_removed
583 A clean_removed
575 A clean_revert
584 A clean_revert
576 A clean_untracked-clean
585 A clean_untracked-clean
586 A clean_untracked-revert
577 A clean_wc
587 A clean_wc
578 A modified_clean
588 A modified_clean
579 A modified_removed
589 A modified_removed
580 A modified_revert
590 A modified_revert
581 A modified_untracked-clean
591 A modified_untracked-clean
592 A modified_untracked-revert
582 A modified_wc
593 A modified_wc
583 A removed_clean
594 A removed_clean
584 A removed_removed
595 A removed_removed
585 A removed_revert
596 A removed_revert
586 A removed_untracked-clean
597 A removed_untracked-clean
598 A removed_untracked-revert
587 A removed_wc
599 A removed_wc
588 $ hg commit -m 'base'
600 $ hg commit -m 'base'
589
601
590 (create a simple text version of the content)
602 (create a simple text version of the content)
591
603
592 $ python ../dircontent.py > ../content-base.txt
604 $ python ../dircontent.py > ../content-base.txt
593 $ cat ../content-base.txt
605 $ cat ../content-base.txt
594 base clean_clean
606 base clean_clean
595 base clean_removed
607 base clean_removed
596 base clean_revert
608 base clean_revert
597 base clean_untracked-clean
609 base clean_untracked-clean
610 base clean_untracked-revert
598 base clean_wc
611 base clean_wc
599 base modified_clean
612 base modified_clean
600 base modified_removed
613 base modified_removed
601 base modified_revert
614 base modified_revert
602 base modified_untracked-clean
615 base modified_untracked-clean
616 base modified_untracked-revert
603 base modified_wc
617 base modified_wc
604 base removed_clean
618 base removed_clean
605 base removed_removed
619 base removed_removed
606 base removed_revert
620 base removed_revert
607 base removed_untracked-clean
621 base removed_untracked-clean
622 base removed_untracked-revert
608 base removed_wc
623 base removed_wc
609
624
610 Create parent changeset
625 Create parent changeset
611
626
612 $ python ../gen-revert-cases.py parent
627 $ python ../gen-revert-cases.py parent
613 $ hg addremove --similarity 0
628 $ hg addremove --similarity 0
614 adding added_clean
629 adding added_clean
615 adding added_removed
630 adding added_removed
616 adding added_revert
631 adding added_revert
617 adding added_untracked-clean
632 adding added_untracked-clean
633 adding added_untracked-revert
618 adding added_wc
634 adding added_wc
619 removing removed_clean
635 removing removed_clean
620 removing removed_removed
636 removing removed_removed
621 removing removed_revert
637 removing removed_revert
622 removing removed_untracked-clean
638 removing removed_untracked-clean
639 removing removed_untracked-revert
623 removing removed_wc
640 removing removed_wc
624 $ hg status
641 $ hg status
625 M modified_clean
642 M modified_clean
626 M modified_removed
643 M modified_removed
627 M modified_revert
644 M modified_revert
628 M modified_untracked-clean
645 M modified_untracked-clean
646 M modified_untracked-revert
629 M modified_wc
647 M modified_wc
630 A added_clean
648 A added_clean
631 A added_removed
649 A added_removed
632 A added_revert
650 A added_revert
633 A added_untracked-clean
651 A added_untracked-clean
652 A added_untracked-revert
634 A added_wc
653 A added_wc
635 R removed_clean
654 R removed_clean
636 R removed_removed
655 R removed_removed
637 R removed_revert
656 R removed_revert
638 R removed_untracked-clean
657 R removed_untracked-clean
658 R removed_untracked-revert
639 R removed_wc
659 R removed_wc
640 $ hg commit -m 'parent'
660 $ hg commit -m 'parent'
641
661
642 (create a simple text version of the content)
662 (create a simple text version of the content)
643
663
644 $ python ../dircontent.py > ../content-parent.txt
664 $ python ../dircontent.py > ../content-parent.txt
645 $ cat ../content-parent.txt
665 $ cat ../content-parent.txt
646 parent added_clean
666 parent added_clean
647 parent added_removed
667 parent added_removed
648 parent added_revert
668 parent added_revert
649 parent added_untracked-clean
669 parent added_untracked-clean
670 parent added_untracked-revert
650 parent added_wc
671 parent added_wc
651 base clean_clean
672 base clean_clean
652 base clean_removed
673 base clean_removed
653 base clean_revert
674 base clean_revert
654 base clean_untracked-clean
675 base clean_untracked-clean
676 base clean_untracked-revert
655 base clean_wc
677 base clean_wc
656 parent modified_clean
678 parent modified_clean
657 parent modified_removed
679 parent modified_removed
658 parent modified_revert
680 parent modified_revert
659 parent modified_untracked-clean
681 parent modified_untracked-clean
682 parent modified_untracked-revert
660 parent modified_wc
683 parent modified_wc
661
684
662 Setup working directory
685 Setup working directory
663
686
664 $ python ../gen-revert-cases.py wc | cat
687 $ python ../gen-revert-cases.py wc | cat
665 $ hg addremove --similarity 0
688 $ hg addremove --similarity 0
666 removing added_removed
689 removing added_removed
667 removing added_revert
690 removing added_revert
691 removing added_untracked-revert
668 removing clean_removed
692 removing clean_removed
669 adding missing_wc
693 adding missing_wc
670 removing modified_removed
694 removing modified_removed
671 adding removed_revert
695 adding removed_revert
696 adding removed_untracked-revert
672 adding removed_wc
697 adding removed_wc
673 $ hg forget *untracked*
698 $ hg forget *untracked*
674 $ hg status
699 $ hg status
675 M added_wc
700 M added_wc
676 M clean_wc
701 M clean_wc
677 M modified_revert
702 M modified_revert
678 M modified_wc
703 M modified_wc
679 A missing_wc
704 A missing_wc
680 A removed_revert
705 A removed_revert
681 A removed_wc
706 A removed_wc
682 R added_removed
707 R added_removed
683 R added_revert
708 R added_revert
684 R added_untracked-clean
709 R added_untracked-clean
710 R added_untracked-revert
685 R clean_removed
711 R clean_removed
686 R clean_untracked-clean
712 R clean_untracked-clean
713 R clean_untracked-revert
687 R modified_removed
714 R modified_removed
688 R modified_untracked-clean
715 R modified_untracked-clean
716 R modified_untracked-revert
717 ? removed_untracked-revert
689
718
690 $ hg status --rev 'desc("base")'
719 $ hg status --rev 'desc("base")'
691 M clean_wc
720 M clean_wc
692 M modified_clean
721 M modified_clean
693 M modified_wc
722 M modified_wc
694 M removed_wc
723 M removed_wc
695 A added_clean
724 A added_clean
696 A added_wc
725 A added_wc
697 A missing_wc
726 A missing_wc
698 R clean_removed
727 R clean_removed
699 R clean_untracked-clean
728 R clean_untracked-clean
729 R clean_untracked-revert
700 R modified_removed
730 R modified_removed
701 R modified_untracked-clean
731 R modified_untracked-clean
732 R modified_untracked-revert
702 R removed_clean
733 R removed_clean
703 R removed_removed
734 R removed_removed
704 R removed_untracked-clean
735 R removed_untracked-clean
736 R removed_untracked-revert
705
737
706 (create a simple text version of the content)
738 (create a simple text version of the content)
707
739
708 $ python ../dircontent.py > ../content-wc.txt
740 $ python ../dircontent.py > ../content-wc.txt
709 $ cat ../content-wc.txt
741 $ cat ../content-wc.txt
710 parent added_clean
742 parent added_clean
711 parent added_untracked-clean
743 parent added_untracked-clean
712 wc added_wc
744 wc added_wc
713 base clean_clean
745 base clean_clean
714 base clean_revert
746 base clean_revert
715 base clean_untracked-clean
747 base clean_untracked-clean
748 base clean_untracked-revert
716 wc clean_wc
749 wc clean_wc
717 wc missing_wc
750 wc missing_wc
718 parent modified_clean
751 parent modified_clean
719 base modified_revert
752 base modified_revert
720 parent modified_untracked-clean
753 parent modified_untracked-clean
754 base modified_untracked-revert
721 wc modified_wc
755 wc modified_wc
722 base removed_revert
756 base removed_revert
757 base removed_untracked-revert
723 wc removed_wc
758 wc removed_wc
724
759
725 $ cd ..
760 $ cd ..
726
761
727 Test revert --all to parent content
762 Test revert --all to parent content
728 -----------------------------------
763 -----------------------------------
729
764
730 (setup from reference repo)
765 (setup from reference repo)
731
766
732 $ cp -r revert-ref revert-parent-all
767 $ cp -r revert-ref revert-parent-all
733 $ cd revert-parent-all
768 $ cd revert-parent-all
734
769
735 check revert output
770 check revert output
736
771
737 $ hg revert --all
772 $ hg revert --all
738 undeleting added_removed
773 undeleting added_removed
739 undeleting added_revert
774 undeleting added_revert
740 undeleting added_untracked-clean
775 undeleting added_untracked-clean
776 undeleting added_untracked-revert
741 reverting added_wc
777 reverting added_wc
742 undeleting clean_removed
778 undeleting clean_removed
743 undeleting clean_untracked-clean
779 undeleting clean_untracked-clean
780 undeleting clean_untracked-revert
744 reverting clean_wc
781 reverting clean_wc
745 forgetting missing_wc
782 forgetting missing_wc
746 undeleting modified_removed
783 undeleting modified_removed
747 reverting modified_revert
784 reverting modified_revert
748 undeleting modified_untracked-clean
785 undeleting modified_untracked-clean
786 undeleting modified_untracked-revert
749 reverting modified_wc
787 reverting modified_wc
750 forgetting removed_revert
788 forgetting removed_revert
751 forgetting removed_wc
789 forgetting removed_wc
752
790
753 Compare resulting directory with revert target.
791 Compare resulting directory with revert target.
754
792
755 The diff is filtered to include change only. The only difference should be
793 The diff is filtered to include change only. The only difference should be
756 additional `.orig` backup file when applicable.
794 additional `.orig` backup file when applicable.
757
795
758 $ python ../dircontent.py > ../content-parent-all.txt
796 $ python ../dircontent.py > ../content-parent-all.txt
759 $ cd ..
797 $ cd ..
760 $ diff -U 0 -- content-parent.txt content-parent-all.txt | grep _
798 $ diff -U 0 -- content-parent.txt content-parent-all.txt | grep _
761 +wc added_wc.orig
799 +wc added_wc.orig
762 +wc clean_wc.orig
800 +wc clean_wc.orig
763 +wc missing_wc
801 +wc missing_wc
764 +base modified_revert.orig
802 +base modified_revert.orig
803 +base modified_untracked-revert.orig
765 +wc modified_wc.orig
804 +wc modified_wc.orig
766 +base removed_revert
805 +base removed_revert
806 +base removed_untracked-revert
767 +wc removed_wc
807 +wc removed_wc
768
808
769 Test revert --all to "base" content
809 Test revert --all to "base" content
770 -----------------------------------
810 -----------------------------------
771
811
772 (setup from reference repo)
812 (setup from reference repo)
773
813
774 $ cp -r revert-ref revert-base-all
814 $ cp -r revert-ref revert-base-all
775 $ cd revert-base-all
815 $ cd revert-base-all
776
816
777 check revert output
817 check revert output
778
818
779 Misbehavior:
819 Misbehavior:
780
820
781 - report "reverting" when file needs no changes
821 - report "reverting" when file needs no changes
782 |
822 |
783 | - reverting modified_revert
823 | - reverting modified_revert
784 | - reverting removed_revert
824 | - reverting removed_revert
785
825
786 $ hg revert --all --rev 'desc(base)'
826 $ hg revert --all --rev 'desc(base)'
787 removing added_clean
827 removing added_clean
788 removing added_wc
828 removing added_wc
789 undeleting clean_removed
829 undeleting clean_removed
790 undeleting clean_untracked-clean
830 undeleting clean_untracked-clean
831 undeleting clean_untracked-revert
791 reverting clean_wc
832 reverting clean_wc
792 forgetting missing_wc
833 forgetting missing_wc
793 reverting modified_clean
834 reverting modified_clean
794 undeleting modified_removed
835 undeleting modified_removed
795 reverting modified_revert
836 reverting modified_revert
796 undeleting modified_untracked-clean
837 undeleting modified_untracked-clean
838 undeleting modified_untracked-revert
797 reverting modified_wc
839 reverting modified_wc
798 adding removed_clean
840 adding removed_clean
799 adding removed_removed
841 adding removed_removed
800 reverting removed_revert
842 reverting removed_revert
801 adding removed_untracked-clean
843 adding removed_untracked-clean
844 adding removed_untracked-revert
802 reverting removed_wc
845 reverting removed_wc
803
846
804 Compare resulting directory with revert target.
847 Compare resulting directory with revert target.
805
848
806 The diff is filtered to include change only. The only difference should be
849 The diff is filtered to include change only. The only difference should be
807 additional `.orig` backup file when applicable.
850 additional `.orig` backup file when applicable.
808
851
809 Misbehavior:
852 Misbehavior:
810
853
811 - no backup for
854 - no backup for
812 | - added_wc (DATA LOSS)
855 | - added_wc (DATA LOSS)
813
856
814 $ python ../dircontent.py > ../content-base-all.txt
857 $ python ../dircontent.py > ../content-base-all.txt
815 $ cd ..
858 $ cd ..
816 $ diff -U 0 -- content-base.txt content-base-all.txt | grep _
859 $ diff -U 0 -- content-base.txt content-base-all.txt | grep _
817 +parent added_untracked-clean
860 +parent added_untracked-clean
818 +wc clean_wc.orig
861 +wc clean_wc.orig
819 +wc missing_wc
862 +wc missing_wc
820 +parent modified_untracked-clean.orig
863 +parent modified_untracked-clean.orig
821 +wc modified_wc.orig
864 +wc modified_wc.orig
822 +wc removed_wc.orig
865 +wc removed_wc.orig
823
866
824 Test revert to parent content with explicit file name
867 Test revert to parent content with explicit file name
825 -----------------------------------------------------
868 -----------------------------------------------------
826
869
827 (setup from reference repo)
870 (setup from reference repo)
828
871
829 $ cp -r revert-ref revert-parent-explicit
872 $ cp -r revert-ref revert-parent-explicit
830 $ cd revert-parent-explicit
873 $ cd revert-parent-explicit
831
874
832 revert all files individually and check the output
875 revert all files individually and check the output
833 (output is expected to be different than in the --all case)
876 (output is expected to be different than in the --all case)
834
877
835 $ for file in `python ../gen-revert-cases.py filelist`; do
878 $ for file in `python ../gen-revert-cases.py filelist`; do
836 > echo '### revert for:' $file;
879 > echo '### revert for:' $file;
837 > hg revert $file;
880 > hg revert $file;
838 > echo
881 > echo
839 > done
882 > done
840 ### revert for: added_clean
883 ### revert for: added_clean
841 no changes needed to added_clean
884 no changes needed to added_clean
842
885
843 ### revert for: added_removed
886 ### revert for: added_removed
844
887
845 ### revert for: added_revert
888 ### revert for: added_revert
846
889
847 ### revert for: added_untracked-clean
890 ### revert for: added_untracked-clean
848
891
892 ### revert for: added_untracked-revert
893
849 ### revert for: added_wc
894 ### revert for: added_wc
850
895
851 ### revert for: clean_clean
896 ### revert for: clean_clean
852 no changes needed to clean_clean
897 no changes needed to clean_clean
853
898
854 ### revert for: clean_removed
899 ### revert for: clean_removed
855
900
856 ### revert for: clean_revert
901 ### revert for: clean_revert
857 no changes needed to clean_revert
902 no changes needed to clean_revert
858
903
859 ### revert for: clean_untracked-clean
904 ### revert for: clean_untracked-clean
860
905
906 ### revert for: clean_untracked-revert
907
861 ### revert for: clean_wc
908 ### revert for: clean_wc
862
909
863 ### revert for: missing_clean
910 ### revert for: missing_clean
864 missing_clean: no such file in rev * (glob)
911 missing_clean: no such file in rev * (glob)
865
912
866 ### revert for: missing_removed
913 ### revert for: missing_removed
867 missing_removed: no such file in rev * (glob)
914 missing_removed: no such file in rev * (glob)
868
915
869 ### revert for: missing_revert
916 ### revert for: missing_revert
870 missing_revert: no such file in rev * (glob)
917 missing_revert: no such file in rev * (glob)
871
918
872 ### revert for: missing_untracked-clean
919 ### revert for: missing_untracked-clean
873 missing_untracked-clean: no such file in rev * (glob)
920 missing_untracked-clean: no such file in rev * (glob)
874
921
922 ### revert for: missing_untracked-revert
923 missing_untracked-revert: no such file in rev * (glob)
924
875 ### revert for: missing_wc
925 ### revert for: missing_wc
876
926
877 ### revert for: modified_clean
927 ### revert for: modified_clean
878 no changes needed to modified_clean
928 no changes needed to modified_clean
879
929
880 ### revert for: modified_removed
930 ### revert for: modified_removed
881
931
882 ### revert for: modified_revert
932 ### revert for: modified_revert
883
933
884 ### revert for: modified_untracked-clean
934 ### revert for: modified_untracked-clean
885
935
936 ### revert for: modified_untracked-revert
937
886 ### revert for: modified_wc
938 ### revert for: modified_wc
887
939
888 ### revert for: removed_clean
940 ### revert for: removed_clean
889 removed_clean: no such file in rev * (glob)
941 removed_clean: no such file in rev * (glob)
890
942
891 ### revert for: removed_removed
943 ### revert for: removed_removed
892 removed_removed: no such file in rev * (glob)
944 removed_removed: no such file in rev * (glob)
893
945
894 ### revert for: removed_revert
946 ### revert for: removed_revert
895
947
896 ### revert for: removed_untracked-clean
948 ### revert for: removed_untracked-clean
897 removed_untracked-clean: no such file in rev * (glob)
949 removed_untracked-clean: no such file in rev * (glob)
898
950
951 ### revert for: removed_untracked-revert
952 file not managed: removed_untracked-revert
953
899 ### revert for: removed_wc
954 ### revert for: removed_wc
900
955
901
956
902 check resulting directory againt the --all run
957 check resulting directory againt the --all run
903 (There should be no difference)
958 (There should be no difference)
904
959
905 $ python ../dircontent.py > ../content-parent-explicit.txt
960 $ python ../dircontent.py > ../content-parent-explicit.txt
906 $ cd ..
961 $ cd ..
907 $ diff -U 0 -- content-parent-all.txt content-parent-explicit.txt | grep _
962 $ diff -U 0 -- content-parent-all.txt content-parent-explicit.txt | grep _
908 [1]
963 [1]
909
964
910 Test revert to "base" content with explicit file name
965 Test revert to "base" content with explicit file name
911 -----------------------------------------------------
966 -----------------------------------------------------
912
967
913 (setup from reference repo)
968 (setup from reference repo)
914
969
915 $ cp -r revert-ref revert-base-explicit
970 $ cp -r revert-ref revert-base-explicit
916 $ cd revert-base-explicit
971 $ cd revert-base-explicit
917
972
918 revert all files individually and check the output
973 revert all files individually and check the output
919 (output is expected to be different than in the --all case)
974 (output is expected to be different than in the --all case)
920
975
921 Misbehavior:
976 Misbehavior:
922
977
923 - fails to report no change to revert for
978 - fails to report no change to revert for
924 |
979 |
925 | - clean_clean
980 | - clean_clean
926 | - added_revert
981 | - added_revert
927 | - clean_revert
982 | - clean_revert
928 | - modified_revert
983 | - modified_revert
929 | - removed_revert
984 | - removed_revert
930 | - added_removed
985 | - added_removed
931 | - added_untracked-clean
986 | - added_untracked-clean
987 | - added_untracked-revert
932
988
933 $ for file in `python ../gen-revert-cases.py filelist`; do
989 $ for file in `python ../gen-revert-cases.py filelist`; do
934 > echo '### revert for:' $file;
990 > echo '### revert for:' $file;
935 > hg revert $file --rev 'desc(base)';
991 > hg revert $file --rev 'desc(base)';
936 > echo
992 > echo
937 > done
993 > done
938 ### revert for: added_clean
994 ### revert for: added_clean
939
995
940 ### revert for: added_removed
996 ### revert for: added_removed
941
997
942 ### revert for: added_revert
998 ### revert for: added_revert
943
999
944 ### revert for: added_untracked-clean
1000 ### revert for: added_untracked-clean
945
1001
1002 ### revert for: added_untracked-revert
1003
946 ### revert for: added_wc
1004 ### revert for: added_wc
947
1005
948 ### revert for: clean_clean
1006 ### revert for: clean_clean
949
1007
950 ### revert for: clean_removed
1008 ### revert for: clean_removed
951
1009
952 ### revert for: clean_revert
1010 ### revert for: clean_revert
953
1011
954 ### revert for: clean_untracked-clean
1012 ### revert for: clean_untracked-clean
955
1013
1014 ### revert for: clean_untracked-revert
1015
956 ### revert for: clean_wc
1016 ### revert for: clean_wc
957
1017
958 ### revert for: missing_clean
1018 ### revert for: missing_clean
959 missing_clean: no such file in rev * (glob)
1019 missing_clean: no such file in rev * (glob)
960
1020
961 ### revert for: missing_removed
1021 ### revert for: missing_removed
962 missing_removed: no such file in rev * (glob)
1022 missing_removed: no such file in rev * (glob)
963
1023
964 ### revert for: missing_revert
1024 ### revert for: missing_revert
965 missing_revert: no such file in rev * (glob)
1025 missing_revert: no such file in rev * (glob)
966
1026
967 ### revert for: missing_untracked-clean
1027 ### revert for: missing_untracked-clean
968 missing_untracked-clean: no such file in rev * (glob)
1028 missing_untracked-clean: no such file in rev * (glob)
969
1029
1030 ### revert for: missing_untracked-revert
1031 missing_untracked-revert: no such file in rev * (glob)
1032
970 ### revert for: missing_wc
1033 ### revert for: missing_wc
971
1034
972 ### revert for: modified_clean
1035 ### revert for: modified_clean
973
1036
974 ### revert for: modified_removed
1037 ### revert for: modified_removed
975
1038
976 ### revert for: modified_revert
1039 ### revert for: modified_revert
977
1040
978 ### revert for: modified_untracked-clean
1041 ### revert for: modified_untracked-clean
979
1042
1043 ### revert for: modified_untracked-revert
1044
980 ### revert for: modified_wc
1045 ### revert for: modified_wc
981
1046
982 ### revert for: removed_clean
1047 ### revert for: removed_clean
983
1048
984 ### revert for: removed_removed
1049 ### revert for: removed_removed
985
1050
986 ### revert for: removed_revert
1051 ### revert for: removed_revert
987
1052
988 ### revert for: removed_untracked-clean
1053 ### revert for: removed_untracked-clean
989
1054
1055 ### revert for: removed_untracked-revert
1056
990 ### revert for: removed_wc
1057 ### revert for: removed_wc
991
1058
992
1059
993 check resulting directory againt the --all run
1060 check resulting directory againt the --all run
994 (There should be no difference)
1061 (There should be no difference)
995
1062
996 $ python ../dircontent.py > ../content-base-explicit.txt
1063 $ python ../dircontent.py > ../content-base-explicit.txt
997 $ cd ..
1064 $ cd ..
998 $ diff -U 0 -- content-base-all.txt content-base-explicit.txt | grep _
1065 $ diff -U 0 -- content-base-all.txt content-base-explicit.txt | grep _
999 [1]
1066 [1]
General Comments 0
You need to be logged in to leave comments. Login now