##// END OF EJS Templates
tests: make test-shelve.t timing-independent...
Martin von Zweigbergk -
r31228:51934fc7 default
parent child Browse files
Show More
@@ -1,1739 +1,1739 b''
1 $ cat <<EOF >> $HGRCPATH
1 $ cat <<EOF >> $HGRCPATH
2 > [extensions]
2 > [extensions]
3 > mq =
3 > mq =
4 > shelve =
4 > shelve =
5 > [defaults]
5 > [defaults]
6 > diff = --nodates --git
6 > diff = --nodates --git
7 > qnew = --date '0 0'
7 > qnew = --date '0 0'
8 > [shelve]
8 > [shelve]
9 > maxbackups = 2
9 > maxbackups = 2
10 > EOF
10 > EOF
11
11
12 $ hg init repo
12 $ hg init repo
13 $ cd repo
13 $ cd repo
14 $ mkdir a b
14 $ mkdir a b
15 $ echo a > a/a
15 $ echo a > a/a
16 $ echo b > b/b
16 $ echo b > b/b
17 $ echo c > c
17 $ echo c > c
18 $ echo d > d
18 $ echo d > d
19 $ echo x > x
19 $ echo x > x
20 $ hg addremove -q
20 $ hg addremove -q
21
21
22 shelve has a help message
22 shelve has a help message
23 $ hg shelve -h
23 $ hg shelve -h
24 hg shelve [OPTION]... [FILE]...
24 hg shelve [OPTION]... [FILE]...
25
25
26 save and set aside changes from the working directory
26 save and set aside changes from the working directory
27
27
28 Shelving takes files that "hg status" reports as not clean, saves the
28 Shelving takes files that "hg status" reports as not clean, saves the
29 modifications to a bundle (a shelved change), and reverts the files so
29 modifications to a bundle (a shelved change), and reverts the files so
30 that their state in the working directory becomes clean.
30 that their state in the working directory becomes clean.
31
31
32 To restore these changes to the working directory, using "hg unshelve";
32 To restore these changes to the working directory, using "hg unshelve";
33 this will work even if you switch to a different commit.
33 this will work even if you switch to a different commit.
34
34
35 When no files are specified, "hg shelve" saves all not-clean files. If
35 When no files are specified, "hg shelve" saves all not-clean files. If
36 specific files or directories are named, only changes to those files are
36 specific files or directories are named, only changes to those files are
37 shelved.
37 shelved.
38
38
39 In bare shelve (when no files are specified, without interactive, include
39 In bare shelve (when no files are specified, without interactive, include
40 and exclude option), shelving remembers information if the working
40 and exclude option), shelving remembers information if the working
41 directory was on newly created branch, in other words working directory
41 directory was on newly created branch, in other words working directory
42 was on different branch than its first parent. In this situation
42 was on different branch than its first parent. In this situation
43 unshelving restores branch information to the working directory.
43 unshelving restores branch information to the working directory.
44
44
45 Each shelved change has a name that makes it easier to find later. The
45 Each shelved change has a name that makes it easier to find later. The
46 name of a shelved change defaults to being based on the active bookmark,
46 name of a shelved change defaults to being based on the active bookmark,
47 or if there is no active bookmark, the current named branch. To specify a
47 or if there is no active bookmark, the current named branch. To specify a
48 different name, use "--name".
48 different name, use "--name".
49
49
50 To see a list of existing shelved changes, use the "--list" option. For
50 To see a list of existing shelved changes, use the "--list" option. For
51 each shelved change, this will print its name, age, and description; use "
51 each shelved change, this will print its name, age, and description; use "
52 --patch" or "--stat" for more details.
52 --patch" or "--stat" for more details.
53
53
54 To delete specific shelved changes, use "--delete". To delete all shelved
54 To delete specific shelved changes, use "--delete". To delete all shelved
55 changes, use "--cleanup".
55 changes, use "--cleanup".
56
56
57 (use 'hg help -e shelve' to show help for the shelve extension)
57 (use 'hg help -e shelve' to show help for the shelve extension)
58
58
59 options ([+] can be repeated):
59 options ([+] can be repeated):
60
60
61 -A --addremove mark new/missing files as added/removed before
61 -A --addremove mark new/missing files as added/removed before
62 shelving
62 shelving
63 -u --unknown store unknown files in the shelve
63 -u --unknown store unknown files in the shelve
64 --cleanup delete all shelved changes
64 --cleanup delete all shelved changes
65 --date DATE shelve with the specified commit date
65 --date DATE shelve with the specified commit date
66 -d --delete delete the named shelved change(s)
66 -d --delete delete the named shelved change(s)
67 -e --edit invoke editor on commit messages
67 -e --edit invoke editor on commit messages
68 -l --list list current shelves
68 -l --list list current shelves
69 -m --message TEXT use text as shelve message
69 -m --message TEXT use text as shelve message
70 -n --name NAME use the given name for the shelved commit
70 -n --name NAME use the given name for the shelved commit
71 -p --patch show patch
71 -p --patch show patch
72 -i --interactive interactive mode, only works while creating a shelve
72 -i --interactive interactive mode, only works while creating a shelve
73 --stat output diffstat-style summary of changes
73 --stat output diffstat-style summary of changes
74 -I --include PATTERN [+] include names matching the given patterns
74 -I --include PATTERN [+] include names matching the given patterns
75 -X --exclude PATTERN [+] exclude names matching the given patterns
75 -X --exclude PATTERN [+] exclude names matching the given patterns
76 --mq operate on patch repository
76 --mq operate on patch repository
77
77
78 (some details hidden, use --verbose to show complete help)
78 (some details hidden, use --verbose to show complete help)
79
79
80 shelving in an empty repo should be possible
80 shelving in an empty repo should be possible
81 (this tests also that editor is not invoked, if '--edit' is not
81 (this tests also that editor is not invoked, if '--edit' is not
82 specified)
82 specified)
83
83
84 $ HGEDITOR=cat hg shelve
84 $ HGEDITOR=cat hg shelve
85 shelved as default
85 shelved as default
86 0 files updated, 0 files merged, 5 files removed, 0 files unresolved
86 0 files updated, 0 files merged, 5 files removed, 0 files unresolved
87
87
88 $ hg unshelve
88 $ hg unshelve
89 unshelving change 'default'
89 unshelving change 'default'
90
90
91 $ hg commit -q -m 'initial commit'
91 $ hg commit -q -m 'initial commit'
92
92
93 $ hg shelve
93 $ hg shelve
94 nothing changed
94 nothing changed
95 [1]
95 [1]
96
96
97 make sure shelve files were backed up
97 make sure shelve files were backed up
98
98
99 $ ls .hg/shelve-backup
99 $ ls .hg/shelve-backup
100 default.hg
100 default.hg
101 default.patch
101 default.patch
102
102
103 checks to make sure we dont create a directory or
103 checks to make sure we dont create a directory or
104 hidden file while choosing a new shelve name
104 hidden file while choosing a new shelve name
105
105
106 when we are given a name
106 when we are given a name
107
107
108 $ hg shelve -n foo/bar
108 $ hg shelve -n foo/bar
109 abort: shelved change names can not contain slashes
109 abort: shelved change names can not contain slashes
110 [255]
110 [255]
111 $ hg shelve -n .baz
111 $ hg shelve -n .baz
112 abort: shelved change names can not start with '.'
112 abort: shelved change names can not start with '.'
113 [255]
113 [255]
114 $ hg shelve -n foo\\bar
114 $ hg shelve -n foo\\bar
115 abort: shelved change names can not contain slashes
115 abort: shelved change names can not contain slashes
116 [255]
116 [255]
117
117
118 when shelve has to choose itself
118 when shelve has to choose itself
119
119
120 $ hg branch x/y -q
120 $ hg branch x/y -q
121 $ hg commit -q -m "Branch commit 0"
121 $ hg commit -q -m "Branch commit 0"
122 $ hg shelve
122 $ hg shelve
123 nothing changed
123 nothing changed
124 [1]
124 [1]
125 $ hg branch .x -q
125 $ hg branch .x -q
126 $ hg commit -q -m "Branch commit 1"
126 $ hg commit -q -m "Branch commit 1"
127 $ hg shelve
127 $ hg shelve
128 nothing changed
128 nothing changed
129 [1]
129 [1]
130 $ hg branch x\\y -q
130 $ hg branch x\\y -q
131 $ hg commit -q -m "Branch commit 2"
131 $ hg commit -q -m "Branch commit 2"
132 $ hg shelve
132 $ hg shelve
133 nothing changed
133 nothing changed
134 [1]
134 [1]
135
135
136 cleaning the branches made for name checking tests
136 cleaning the branches made for name checking tests
137
137
138 $ hg up default -q
138 $ hg up default -q
139 $ hg strip 3 -q
139 $ hg strip 3 -q
140 $ hg strip 2 -q
140 $ hg strip 2 -q
141 $ hg strip 1 -q
141 $ hg strip 1 -q
142
142
143 create an mq patch - shelving should work fine with a patch applied
143 create an mq patch - shelving should work fine with a patch applied
144
144
145 $ echo n > n
145 $ echo n > n
146 $ hg add n
146 $ hg add n
147 $ hg commit n -m second
147 $ hg commit n -m second
148 $ hg qnew second.patch
148 $ hg qnew second.patch
149
149
150 shelve a change that we will delete later
150 shelve a change that we will delete later
151
151
152 $ echo a >> a/a
152 $ echo a >> a/a
153 $ hg shelve
153 $ hg shelve
154 shelved as default
154 shelved as default
155 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
155 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
156
156
157 set up some more complex changes to shelve
157 set up some more complex changes to shelve
158
158
159 $ echo a >> a/a
159 $ echo a >> a/a
160 $ hg mv b b.rename
160 $ hg mv b b.rename
161 moving b/b to b.rename/b (glob)
161 moving b/b to b.rename/b (glob)
162 $ hg cp c c.copy
162 $ hg cp c c.copy
163 $ hg status -C
163 $ hg status -C
164 M a/a
164 M a/a
165 A b.rename/b
165 A b.rename/b
166 b/b
166 b/b
167 A c.copy
167 A c.copy
168 c
168 c
169 R b/b
169 R b/b
170
170
171 the common case - no options or filenames
171 the common case - no options or filenames
172
172
173 $ hg shelve
173 $ hg shelve
174 shelved as default-01
174 shelved as default-01
175 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
175 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
176 $ hg status -C
176 $ hg status -C
177
177
178 ensure that our shelved changes exist
178 ensure that our shelved changes exist
179
179
180 $ hg shelve -l
180 $ hg shelve -l
181 default-01 (*)* changes to: [mq]: second.patch (glob)
181 default-01 (*)* changes to: [mq]: second.patch (glob)
182 default (*)* changes to: [mq]: second.patch (glob)
182 default (*)* changes to: [mq]: second.patch (glob)
183
183
184 $ hg shelve -l -p default
184 $ hg shelve -l -p default
185 default (*)* changes to: [mq]: second.patch (glob)
185 default (*)* changes to: [mq]: second.patch (glob)
186
186
187 diff --git a/a/a b/a/a
187 diff --git a/a/a b/a/a
188 --- a/a/a
188 --- a/a/a
189 +++ b/a/a
189 +++ b/a/a
190 @@ -1,1 +1,2 @@
190 @@ -1,1 +1,2 @@
191 a
191 a
192 +a
192 +a
193
193
194 $ hg shelve --list --addremove
194 $ hg shelve --list --addremove
195 abort: options '--list' and '--addremove' may not be used together
195 abort: options '--list' and '--addremove' may not be used together
196 [255]
196 [255]
197
197
198 delete our older shelved change
198 delete our older shelved change
199
199
200 $ hg shelve -d default
200 $ hg shelve -d default
201 $ hg qfinish -a -q
201 $ hg qfinish -a -q
202
202
203 ensure shelve backups aren't overwritten
203 ensure shelve backups aren't overwritten
204
204
205 $ ls .hg/shelve-backup/
205 $ ls .hg/shelve-backup/
206 default-1.hg
206 default-1.hg
207 default-1.patch
207 default-1.patch
208 default.hg
208 default.hg
209 default.patch
209 default.patch
210
210
211 local edits should not prevent a shelved change from applying
211 local edits should not prevent a shelved change from applying
212
212
213 $ printf "z\na\n" > a/a
213 $ printf "z\na\n" > a/a
214 $ hg unshelve --keep
214 $ hg unshelve --keep
215 unshelving change 'default-01'
215 unshelving change 'default-01'
216 temporarily committing pending changes (restore with 'hg unshelve --abort')
216 temporarily committing pending changes (restore with 'hg unshelve --abort')
217 rebasing shelved changes
217 rebasing shelved changes
218 rebasing 4:32c69314e062 "changes to: [mq]: second.patch" (tip)
218 rebasing 4:32c69314e062 "changes to: [mq]: second.patch" (tip)
219 merging a/a
219 merging a/a
220
220
221 $ hg revert --all -q
221 $ hg revert --all -q
222 $ rm a/a.orig b.rename/b c.copy
222 $ rm a/a.orig b.rename/b c.copy
223
223
224 apply it and make sure our state is as expected
224 apply it and make sure our state is as expected
225
225
226 (this also tests that same timestamp prevents backups from being
226 (this also tests that same timestamp prevents backups from being
227 removed, even though there are more than 'maxbackups' backups)
227 removed, even though there are more than 'maxbackups' backups)
228
228
229 $ f -t .hg/shelve-backup/default.patch
229 $ f -t .hg/shelve-backup/default.patch
230 .hg/shelve-backup/default.patch: file
230 .hg/shelve-backup/default.patch: file
231 $ touch -t 200001010000 .hg/shelve-backup/default.patch
231 $ touch -t 200001010000 .hg/shelve-backup/default.patch
232 $ f -t .hg/shelve-backup/default-1.patch
232 $ f -t .hg/shelve-backup/default-1.patch
233 .hg/shelve-backup/default-1.patch: file
233 .hg/shelve-backup/default-1.patch: file
234 $ touch -t 200001010000 .hg/shelve-backup/default-1.patch
234 $ touch -t 200001010000 .hg/shelve-backup/default-1.patch
235
235
236 $ hg unshelve
236 $ hg unshelve
237 unshelving change 'default-01'
237 unshelving change 'default-01'
238 $ hg status -C
238 $ hg status -C
239 M a/a
239 M a/a
240 A b.rename/b
240 A b.rename/b
241 b/b
241 b/b
242 A c.copy
242 A c.copy
243 c
243 c
244 R b/b
244 R b/b
245 $ hg shelve -l
245 $ hg shelve -l
246
246
247 (both of default.hg and default-1.hg should be still kept, because it
247 (both of default.hg and default-1.hg should be still kept, because it
248 is difficult to decide actual order of them from same timestamp)
248 is difficult to decide actual order of them from same timestamp)
249
249
250 $ ls .hg/shelve-backup/
250 $ ls .hg/shelve-backup/
251 default-01.hg
251 default-01.hg
252 default-01.patch
252 default-01.patch
253 default-1.hg
253 default-1.hg
254 default-1.patch
254 default-1.patch
255 default.hg
255 default.hg
256 default.patch
256 default.patch
257
257
258 $ hg unshelve
258 $ hg unshelve
259 abort: no shelved changes to apply!
259 abort: no shelved changes to apply!
260 [255]
260 [255]
261 $ hg unshelve foo
261 $ hg unshelve foo
262 abort: shelved change 'foo' not found
262 abort: shelved change 'foo' not found
263 [255]
263 [255]
264
264
265 named shelves, specific filenames, and "commit messages" should all work
265 named shelves, specific filenames, and "commit messages" should all work
266 (this tests also that editor is invoked, if '--edit' is specified)
266 (this tests also that editor is invoked, if '--edit' is specified)
267
267
268 $ hg status -C
268 $ hg status -C
269 M a/a
269 M a/a
270 A b.rename/b
270 A b.rename/b
271 b/b
271 b/b
272 A c.copy
272 A c.copy
273 c
273 c
274 R b/b
274 R b/b
275 $ HGEDITOR=cat hg shelve -q -n wibble -m wat -e a
275 $ HGEDITOR=cat hg shelve -q -n wibble -m wat -e a
276 wat
276 wat
277
277
278
278
279 HG: Enter commit message. Lines beginning with 'HG:' are removed.
279 HG: Enter commit message. Lines beginning with 'HG:' are removed.
280 HG: Leave message empty to abort commit.
280 HG: Leave message empty to abort commit.
281 HG: --
281 HG: --
282 HG: user: shelve@localhost
282 HG: user: shelve@localhost
283 HG: branch 'default'
283 HG: branch 'default'
284 HG: changed a/a
284 HG: changed a/a
285
285
286 expect "a" to no longer be present, but status otherwise unchanged
286 expect "a" to no longer be present, but status otherwise unchanged
287
287
288 $ hg status -C
288 $ hg status -C
289 A b.rename/b
289 A b.rename/b
290 b/b
290 b/b
291 A c.copy
291 A c.copy
292 c
292 c
293 R b/b
293 R b/b
294 $ hg shelve -l --stat
294 $ hg shelve -l --stat
295 wibble (*) wat (glob)
295 wibble (*) wat (glob)
296 a/a | 1 +
296 a/a | 1 +
297 1 files changed, 1 insertions(+), 0 deletions(-)
297 1 files changed, 1 insertions(+), 0 deletions(-)
298
298
299 and now "a/a" should reappear
299 and now "a/a" should reappear
300
300
301 $ cd a
301 $ cd a
302 $ hg unshelve -q wibble
302 $ hg unshelve -q wibble
303 $ cd ..
303 $ cd ..
304 $ hg status -C
304 $ hg status -C
305 M a/a
305 M a/a
306 A b.rename/b
306 A b.rename/b
307 b/b
307 b/b
308 A c.copy
308 A c.copy
309 c
309 c
310 R b/b
310 R b/b
311
311
312 ensure old shelve backups are being deleted automatically
312 ensure old shelve backups are being deleted automatically
313
313
314 $ ls .hg/shelve-backup/
314 $ ls .hg/shelve-backup/
315 default-01.hg
315 default-01.hg
316 default-01.patch
316 default-01.patch
317 wibble.hg
317 wibble.hg
318 wibble.patch
318 wibble.patch
319
319
320 cause unshelving to result in a merge with 'a' conflicting
320 cause unshelving to result in a merge with 'a' conflicting
321
321
322 $ hg shelve -q
322 $ hg shelve -q
323 $ echo c>>a/a
323 $ echo c>>a/a
324 $ hg commit -m second
324 $ hg commit -m second
325 $ hg tip --template '{files}\n'
325 $ hg tip --template '{files}\n'
326 a/a
326 a/a
327
327
328 add an unrelated change that should be preserved
328 add an unrelated change that should be preserved
329
329
330 $ mkdir foo
330 $ mkdir foo
331 $ echo foo > foo/foo
331 $ echo foo > foo/foo
332 $ hg add foo/foo
332 $ hg add foo/foo
333
333
334 force a conflicted merge to occur
334 force a conflicted merge to occur
335
335
336 $ hg unshelve
336 $ hg unshelve
337 unshelving change 'default'
337 unshelving change 'default'
338 temporarily committing pending changes (restore with 'hg unshelve --abort')
338 temporarily committing pending changes (restore with 'hg unshelve --abort')
339 rebasing shelved changes
339 rebasing shelved changes
340 rebasing 5:32c69314e062 "changes to: [mq]: second.patch" (tip)
340 rebasing 5:32c69314e062 "changes to: [mq]: second.patch" (tip)
341 merging a/a
341 merging a/a
342 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
342 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
343 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
343 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
344 [1]
344 [1]
345
345
346 ensure that we have a merge with unresolved conflicts
346 ensure that we have a merge with unresolved conflicts
347
347
348 $ hg heads -q --template '{rev}\n'
348 $ hg heads -q --template '{rev}\n'
349 5
349 5
350 4
350 4
351 $ hg parents -q --template '{rev}\n'
351 $ hg parents -q --template '{rev}\n'
352 4
352 4
353 5
353 5
354 $ hg status
354 $ hg status
355 M a/a
355 M a/a
356 M b.rename/b
356 M b.rename/b
357 M c.copy
357 M c.copy
358 R b/b
358 R b/b
359 ? a/a.orig
359 ? a/a.orig
360 $ hg diff
360 $ hg diff
361 diff --git a/a/a b/a/a
361 diff --git a/a/a b/a/a
362 --- a/a/a
362 --- a/a/a
363 +++ b/a/a
363 +++ b/a/a
364 @@ -1,2 +1,6 @@
364 @@ -1,2 +1,6 @@
365 a
365 a
366 +<<<<<<< dest: * - shelve: pending changes temporary commit (glob)
366 +<<<<<<< dest: * - shelve: pending changes temporary commit (glob)
367 c
367 c
368 +=======
368 +=======
369 +a
369 +a
370 +>>>>>>> source: 32c69314e062 - shelve: changes to: [mq]: second.patch
370 +>>>>>>> source: 32c69314e062 - shelve: changes to: [mq]: second.patch
371 diff --git a/b/b b/b.rename/b
371 diff --git a/b/b b/b.rename/b
372 rename from b/b
372 rename from b/b
373 rename to b.rename/b
373 rename to b.rename/b
374 diff --git a/c b/c.copy
374 diff --git a/c b/c.copy
375 copy from c
375 copy from c
376 copy to c.copy
376 copy to c.copy
377 $ hg resolve -l
377 $ hg resolve -l
378 U a/a
378 U a/a
379
379
380 $ hg shelve
380 $ hg shelve
381 abort: unshelve already in progress
381 abort: unshelve already in progress
382 (use 'hg unshelve --continue' or 'hg unshelve --abort')
382 (use 'hg unshelve --continue' or 'hg unshelve --abort')
383 [255]
383 [255]
384
384
385 abort the unshelve and be happy
385 abort the unshelve and be happy
386
386
387 $ hg status
387 $ hg status
388 M a/a
388 M a/a
389 M b.rename/b
389 M b.rename/b
390 M c.copy
390 M c.copy
391 R b/b
391 R b/b
392 ? a/a.orig
392 ? a/a.orig
393 $ hg unshelve -a
393 $ hg unshelve -a
394 rebase aborted
394 rebase aborted
395 unshelve of 'default' aborted
395 unshelve of 'default' aborted
396 $ hg heads -q
396 $ hg heads -q
397 3:2e69b451d1ea
397 3:2e69b451d1ea
398 $ hg parents
398 $ hg parents
399 changeset: 3:2e69b451d1ea
399 changeset: 3:2e69b451d1ea
400 tag: tip
400 tag: tip
401 user: test
401 user: test
402 date: Thu Jan 01 00:00:00 1970 +0000
402 date: Thu Jan 01 00:00:00 1970 +0000
403 summary: second
403 summary: second
404
404
405 $ hg resolve -l
405 $ hg resolve -l
406 $ hg status
406 $ hg status
407 A foo/foo
407 A foo/foo
408 ? a/a.orig
408 ? a/a.orig
409
409
410 try to continue with no unshelve underway
410 try to continue with no unshelve underway
411
411
412 $ hg unshelve -c
412 $ hg unshelve -c
413 abort: no unshelve in progress
413 abort: no unshelve in progress
414 [255]
414 [255]
415 $ hg status
415 $ hg status
416 A foo/foo
416 A foo/foo
417 ? a/a.orig
417 ? a/a.orig
418
418
419 redo the unshelve to get a conflict
419 redo the unshelve to get a conflict
420
420
421 $ hg unshelve -q
421 $ hg unshelve -q
422 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
422 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
423 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
423 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
424 [1]
424 [1]
425
425
426 attempt to continue
426 attempt to continue
427
427
428 $ hg unshelve -c
428 $ hg unshelve -c
429 abort: unresolved conflicts, can't continue
429 abort: unresolved conflicts, can't continue
430 (see 'hg resolve', then 'hg unshelve --continue')
430 (see 'hg resolve', then 'hg unshelve --continue')
431 [255]
431 [255]
432
432
433 $ hg revert -r . a/a
433 $ hg revert -r . a/a
434 $ hg resolve -m a/a
434 $ hg resolve -m a/a
435 (no more unresolved files)
435 (no more unresolved files)
436 continue: hg unshelve --continue
436 continue: hg unshelve --continue
437
437
438 $ hg commit -m 'commit while unshelve in progress'
438 $ hg commit -m 'commit while unshelve in progress'
439 abort: unshelve already in progress
439 abort: unshelve already in progress
440 (use 'hg unshelve --continue' or 'hg unshelve --abort')
440 (use 'hg unshelve --continue' or 'hg unshelve --abort')
441 [255]
441 [255]
442
442
443 $ hg graft --continue
443 $ hg graft --continue
444 abort: no graft in progress
444 abort: no graft in progress
445 (continue: hg unshelve --continue)
445 (continue: hg unshelve --continue)
446 [255]
446 [255]
447 $ hg unshelve -c
447 $ hg unshelve -c
448 rebasing 5:32c69314e062 "changes to: [mq]: second.patch" (tip)
448 rebasing 5:32c69314e062 "changes to: [mq]: second.patch" (tip)
449 unshelve of 'default' complete
449 unshelve of 'default' complete
450
450
451 ensure the repo is as we hope
451 ensure the repo is as we hope
452
452
453 $ hg parents
453 $ hg parents
454 changeset: 3:2e69b451d1ea
454 changeset: 3:2e69b451d1ea
455 tag: tip
455 tag: tip
456 user: test
456 user: test
457 date: Thu Jan 01 00:00:00 1970 +0000
457 date: Thu Jan 01 00:00:00 1970 +0000
458 summary: second
458 summary: second
459
459
460 $ hg heads -q
460 $ hg heads -q
461 3:2e69b451d1ea
461 3:2e69b451d1ea
462
462
463 $ hg status -C
463 $ hg status -C
464 A b.rename/b
464 A b.rename/b
465 b/b
465 b/b
466 A c.copy
466 A c.copy
467 c
467 c
468 A foo/foo
468 A foo/foo
469 R b/b
469 R b/b
470 ? a/a.orig
470 ? a/a.orig
471
471
472 there should be no shelves left
472 there should be no shelves left
473
473
474 $ hg shelve -l
474 $ hg shelve -l
475
475
476 #if execbit
476 #if execbit
477
477
478 ensure that metadata-only changes are shelved
478 ensure that metadata-only changes are shelved
479
479
480 $ chmod +x a/a
480 $ chmod +x a/a
481 $ hg shelve -q -n execbit a/a
481 $ hg shelve -q -n execbit a/a
482 $ hg status a/a
482 $ hg status a/a
483 $ hg unshelve -q execbit
483 $ hg unshelve -q execbit
484 $ hg status a/a
484 $ hg status a/a
485 M a/a
485 M a/a
486 $ hg revert a/a
486 $ hg revert a/a
487
487
488 #endif
488 #endif
489
489
490 #if symlink
490 #if symlink
491
491
492 $ rm a/a
492 $ rm a/a
493 $ ln -s foo a/a
493 $ ln -s foo a/a
494 $ hg shelve -q -n symlink a/a
494 $ hg shelve -q -n symlink a/a
495 $ hg status a/a
495 $ hg status a/a
496 $ hg unshelve -q -n symlink
496 $ hg unshelve -q -n symlink
497 $ hg status a/a
497 $ hg status a/a
498 M a/a
498 M a/a
499 $ hg revert a/a
499 $ hg revert a/a
500
500
501 #endif
501 #endif
502
502
503 set up another conflict between a commit and a shelved change
503 set up another conflict between a commit and a shelved change
504
504
505 $ hg revert -q -C -a
505 $ hg revert -q -C -a
506 $ rm a/a.orig b.rename/b c.copy
506 $ rm a/a.orig b.rename/b c.copy
507 $ echo a >> a/a
507 $ echo a >> a/a
508 $ hg shelve -q
508 $ hg shelve -q
509 $ echo x >> a/a
509 $ echo x >> a/a
510 $ hg ci -m 'create conflict'
510 $ hg ci -m 'create conflict'
511 $ hg add foo/foo
511 $ hg add foo/foo
512
512
513 if we resolve a conflict while unshelving, the unshelve should succeed
513 if we resolve a conflict while unshelving, the unshelve should succeed
514
514
515 $ hg unshelve --tool :merge-other --keep
515 $ hg unshelve --tool :merge-other --keep
516 unshelving change 'default'
516 unshelving change 'default'
517 temporarily committing pending changes (restore with 'hg unshelve --abort')
517 temporarily committing pending changes (restore with 'hg unshelve --abort')
518 rebasing shelved changes
518 rebasing shelved changes
519 rebasing 6:2f694dd83a13 "changes to: second" (tip)
519 rebasing 6:2f694dd83a13 "changes to: second" (tip)
520 merging a/a
520 merging a/a
521 $ hg parents -q
521 $ hg parents -q
522 4:33f7f61e6c5e
522 4:33f7f61e6c5e
523 $ hg shelve -l
523 $ hg shelve -l
524 default (*)* changes to: second (glob)
524 default (*)* changes to: second (glob)
525 $ hg status
525 $ hg status
526 M a/a
526 M a/a
527 A foo/foo
527 A foo/foo
528 $ cat a/a
528 $ cat a/a
529 a
529 a
530 c
530 c
531 a
531 a
532 $ cat > a/a << EOF
532 $ cat > a/a << EOF
533 > a
533 > a
534 > c
534 > c
535 > x
535 > x
536 > EOF
536 > EOF
537
537
538 $ HGMERGE=true hg unshelve
538 $ HGMERGE=true hg unshelve
539 unshelving change 'default'
539 unshelving change 'default'
540 temporarily committing pending changes (restore with 'hg unshelve --abort')
540 temporarily committing pending changes (restore with 'hg unshelve --abort')
541 rebasing shelved changes
541 rebasing shelved changes
542 rebasing 6:2f694dd83a13 "changes to: second" (tip)
542 rebasing 6:2f694dd83a13 "changes to: second" (tip)
543 merging a/a
543 merging a/a
544 note: rebase of 6:2f694dd83a13 created no changes to commit
544 note: rebase of 6:2f694dd83a13 created no changes to commit
545 $ hg parents -q
545 $ hg parents -q
546 4:33f7f61e6c5e
546 4:33f7f61e6c5e
547 $ hg shelve -l
547 $ hg shelve -l
548 $ hg status
548 $ hg status
549 A foo/foo
549 A foo/foo
550 $ cat a/a
550 $ cat a/a
551 a
551 a
552 c
552 c
553 x
553 x
554
554
555 test keep and cleanup
555 test keep and cleanup
556
556
557 $ hg shelve
557 $ hg shelve
558 shelved as default
558 shelved as default
559 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
559 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
560 $ hg shelve --list
560 $ hg shelve --list
561 default (*)* changes to: create conflict (glob)
561 default (*)* changes to: create conflict (glob)
562 $ hg unshelve -k
562 $ hg unshelve -k
563 unshelving change 'default'
563 unshelving change 'default'
564 $ hg shelve --list
564 $ hg shelve --list
565 default (*)* changes to: create conflict (glob)
565 default (*)* changes to: create conflict (glob)
566 $ hg shelve --cleanup
566 $ hg shelve --cleanup
567 $ hg shelve --list
567 $ hg shelve --list
568
568
569 $ hg shelve --cleanup --delete
569 $ hg shelve --cleanup --delete
570 abort: options '--cleanup' and '--delete' may not be used together
570 abort: options '--cleanup' and '--delete' may not be used together
571 [255]
571 [255]
572 $ hg shelve --cleanup --patch
572 $ hg shelve --cleanup --patch
573 abort: options '--cleanup' and '--patch' may not be used together
573 abort: options '--cleanup' and '--patch' may not be used together
574 [255]
574 [255]
575 $ hg shelve --cleanup --message MESSAGE
575 $ hg shelve --cleanup --message MESSAGE
576 abort: options '--cleanup' and '--message' may not be used together
576 abort: options '--cleanup' and '--message' may not be used together
577 [255]
577 [255]
578
578
579 test bookmarks
579 test bookmarks
580
580
581 $ hg bookmark test
581 $ hg bookmark test
582 $ hg bookmark
582 $ hg bookmark
583 * test 4:33f7f61e6c5e
583 * test 4:33f7f61e6c5e
584 $ hg shelve
584 $ hg shelve
585 shelved as test
585 shelved as test
586 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
586 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
587 $ hg bookmark
587 $ hg bookmark
588 * test 4:33f7f61e6c5e
588 * test 4:33f7f61e6c5e
589 $ hg unshelve
589 $ hg unshelve
590 unshelving change 'test'
590 unshelving change 'test'
591 $ hg bookmark
591 $ hg bookmark
592 * test 4:33f7f61e6c5e
592 * test 4:33f7f61e6c5e
593
593
594 shelve should still work even if mq is disabled
594 shelve should still work even if mq is disabled
595
595
596 $ hg --config extensions.mq=! shelve
596 $ hg --config extensions.mq=! shelve
597 shelved as test
597 shelved as test
598 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
598 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
599 $ hg --config extensions.mq=! shelve --list
599 $ hg --config extensions.mq=! shelve --list
600 test (*)* changes to: create conflict (glob)
600 test (*)* changes to: create conflict (glob)
601 $ hg bookmark
601 $ hg bookmark
602 * test 4:33f7f61e6c5e
602 * test 4:33f7f61e6c5e
603 $ hg --config extensions.mq=! unshelve
603 $ hg --config extensions.mq=! unshelve
604 unshelving change 'test'
604 unshelving change 'test'
605 $ hg bookmark
605 $ hg bookmark
606 * test 4:33f7f61e6c5e
606 * test 4:33f7f61e6c5e
607
607
608 shelve should leave dirstate clean (issue4055)
608 shelve should leave dirstate clean (issue4055)
609
609
610 $ cd ..
610 $ cd ..
611 $ hg init shelverebase
611 $ hg init shelverebase
612 $ cd shelverebase
612 $ cd shelverebase
613 $ printf 'x\ny\n' > x
613 $ printf 'x\ny\n' > x
614 $ echo z > z
614 $ echo z > z
615 $ hg commit -Aqm xy
615 $ hg commit -Aqm xy
616 $ echo z >> x
616 $ echo z >> x
617 $ hg commit -Aqm z
617 $ hg commit -Aqm z
618 $ hg up 0
618 $ hg up 0
619 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
619 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
620 $ printf 'a\nx\ny\nz\n' > x
620 $ printf 'a\nx\ny\nz\n' > x
621 $ hg commit -Aqm xyz
621 $ hg commit -Aqm xyz
622 $ echo c >> z
622 $ echo c >> z
623 $ hg shelve
623 $ hg shelve
624 shelved as default
624 shelved as default
625 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
625 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
626 $ hg rebase -d 1 --config extensions.rebase=
626 $ hg rebase -d 1 --config extensions.rebase=
627 rebasing 2:323bfa07f744 "xyz" (tip)
627 rebasing 2:323bfa07f744 "xyz" (tip)
628 merging x
628 merging x
629 saved backup bundle to $TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-78114325-backup.hg (glob)
629 saved backup bundle to $TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-78114325-backup.hg (glob)
630 $ hg unshelve
630 $ hg unshelve
631 unshelving change 'default'
631 unshelving change 'default'
632 rebasing shelved changes
632 rebasing shelved changes
633 rebasing 4:82a0d7d6ba61 "changes to: xyz" (tip)
633 rebasing 4:82a0d7d6ba61 "changes to: xyz" (tip)
634 $ hg status
634 $ hg status
635 M z
635 M z
636
636
637 $ cd ..
637 $ cd ..
638
638
639 shelve should only unshelve pending changes (issue4068)
639 shelve should only unshelve pending changes (issue4068)
640
640
641 $ hg init onlypendingchanges
641 $ hg init onlypendingchanges
642 $ cd onlypendingchanges
642 $ cd onlypendingchanges
643 $ touch a
643 $ touch a
644 $ hg ci -Aqm a
644 $ hg ci -Aqm a
645 $ touch b
645 $ touch b
646 $ hg ci -Aqm b
646 $ hg ci -Aqm b
647 $ hg up -q 0
647 $ hg up -q 0
648 $ touch c
648 $ touch c
649 $ hg ci -Aqm c
649 $ hg ci -Aqm c
650
650
651 $ touch d
651 $ touch d
652 $ hg add d
652 $ hg add d
653 $ hg shelve
653 $ hg shelve
654 shelved as default
654 shelved as default
655 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
655 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
656 $ hg up -q 1
656 $ hg up -q 1
657 $ hg unshelve
657 $ hg unshelve
658 unshelving change 'default'
658 unshelving change 'default'
659 rebasing shelved changes
659 rebasing shelved changes
660 rebasing 3:958bcbd1776e "changes to: c" (tip)
660 rebasing 3:958bcbd1776e "changes to: c" (tip)
661 $ hg status
661 $ hg status
662 A d
662 A d
663
663
664 unshelve should work on an ancestor of the original commit
664 unshelve should work on an ancestor of the original commit
665
665
666 $ hg shelve
666 $ hg shelve
667 shelved as default
667 shelved as default
668 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
668 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
669 $ hg up 0
669 $ hg up 0
670 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
670 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
671 $ hg unshelve
671 $ hg unshelve
672 unshelving change 'default'
672 unshelving change 'default'
673 rebasing shelved changes
673 rebasing shelved changes
674 rebasing 3:013284d9655e "changes to: b" (tip)
674 rebasing 3:013284d9655e "changes to: b" (tip)
675 $ hg status
675 $ hg status
676 A d
676 A d
677
677
678 test bug 4073 we need to enable obsolete markers for it
678 test bug 4073 we need to enable obsolete markers for it
679
679
680 $ cat >> $HGRCPATH << EOF
680 $ cat >> $HGRCPATH << EOF
681 > [experimental]
681 > [experimental]
682 > evolution=createmarkers
682 > evolution=createmarkers
683 > EOF
683 > EOF
684 $ hg shelve
684 $ hg shelve
685 shelved as default
685 shelved as default
686 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
686 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
687 $ hg debugobsolete `hg --debug id -i -r 1`
687 $ hg debugobsolete `hg --debug id -i -r 1`
688 $ hg unshelve
688 $ hg unshelve
689 unshelving change 'default'
689 unshelving change 'default'
690
690
691 unshelve should leave unknown files alone (issue4113)
691 unshelve should leave unknown files alone (issue4113)
692
692
693 $ echo e > e
693 $ echo e > e
694 $ hg shelve
694 $ hg shelve
695 shelved as default
695 shelved as default
696 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
696 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
697 $ hg status
697 $ hg status
698 ? e
698 ? e
699 $ hg unshelve
699 $ hg unshelve
700 unshelving change 'default'
700 unshelving change 'default'
701 $ hg status
701 $ hg status
702 A d
702 A d
703 ? e
703 ? e
704 $ cat e
704 $ cat e
705 e
705 e
706
706
707 unshelve should keep a copy of unknown files
707 unshelve should keep a copy of unknown files
708
708
709 $ hg add e
709 $ hg add e
710 $ hg shelve
710 $ hg shelve
711 shelved as default
711 shelved as default
712 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
712 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
713 $ echo z > e
713 $ echo z > e
714 $ hg unshelve
714 $ hg unshelve
715 unshelving change 'default'
715 unshelving change 'default'
716 $ cat e
716 $ cat e
717 e
717 e
718 $ cat e.orig
718 $ cat e.orig
719 z
719 z
720
720
721
721
722 unshelve and conflicts with tracked and untracked files
722 unshelve and conflicts with tracked and untracked files
723
723
724 preparing:
724 preparing:
725
725
726 $ rm *.orig
726 $ rm *.orig
727 $ hg ci -qm 'commit stuff'
727 $ hg ci -qm 'commit stuff'
728 $ hg phase -p null:
728 $ hg phase -p null:
729
729
730 no other changes - no merge:
730 no other changes - no merge:
731
731
732 $ echo f > f
732 $ echo f > f
733 $ hg add f
733 $ hg add f
734 $ hg shelve
734 $ hg shelve
735 shelved as default
735 shelved as default
736 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
736 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
737 $ echo g > f
737 $ echo g > f
738 $ hg unshelve
738 $ hg unshelve
739 unshelving change 'default'
739 unshelving change 'default'
740 $ hg st
740 $ hg st
741 A f
741 A f
742 ? f.orig
742 ? f.orig
743 $ cat f
743 $ cat f
744 f
744 f
745 $ cat f.orig
745 $ cat f.orig
746 g
746 g
747
747
748 other uncommitted changes - merge:
748 other uncommitted changes - merge:
749
749
750 $ hg st
750 $ hg st
751 A f
751 A f
752 ? f.orig
752 ? f.orig
753 $ hg shelve
753 $ hg shelve
754 shelved as default
754 shelved as default
755 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
755 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
756 $ hg log -G --template '{rev} {desc|firstline} {author}' -R bundle://.hg/shelved/default.hg -r 'bundle()'
756 $ hg log -G --template '{rev} {desc|firstline} {author}' -R bundle://.hg/shelved/default.hg -r 'bundle()'
757 o 4 changes to: commit stuff shelve@localhost
757 o 4 changes to: commit stuff shelve@localhost
758 |
758 |
759 ~
759 ~
760 $ hg log -G --template '{rev} {desc|firstline} {author}'
760 $ hg log -G --template '{rev} {desc|firstline} {author}'
761 @ 3 commit stuff test
761 @ 3 commit stuff test
762 |
762 |
763 | o 2 c test
763 | o 2 c test
764 |/
764 |/
765 o 0 a test
765 o 0 a test
766
766
767 $ mv f.orig f
767 $ mv f.orig f
768 $ echo 1 > a
768 $ echo 1 > a
769 $ hg unshelve --date '1073741824 0'
769 $ hg unshelve --date '1073741824 0'
770 unshelving change 'default'
770 unshelving change 'default'
771 temporarily committing pending changes (restore with 'hg unshelve --abort')
771 temporarily committing pending changes (restore with 'hg unshelve --abort')
772 rebasing shelved changes
772 rebasing shelved changes
773 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
773 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
774 merging f
774 merging f
775 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
775 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
776 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
776 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
777 [1]
777 [1]
778 $ hg log -G --template '{rev} {desc|firstline} {author} {date|isodate}'
778 $ hg log -G --template '{rev} {desc|firstline} {author} {date|isodate}'
779 @ 5 changes to: commit stuff shelve@localhost 1970-01-01 00:00 +0000
779 @ 5 changes to: commit stuff shelve@localhost 1970-01-01 00:00 +0000
780 |
780 |
781 | @ 4 pending changes temporary commit shelve@localhost 2004-01-10 13:37 +0000
781 | @ 4 pending changes temporary commit shelve@localhost 2004-01-10 13:37 +0000
782 |/
782 |/
783 o 3 commit stuff test 1970-01-01 00:00 +0000
783 o 3 commit stuff test 1970-01-01 00:00 +0000
784 |
784 |
785 | o 2 c test 1970-01-01 00:00 +0000
785 | o 2 c test 1970-01-01 00:00 +0000
786 |/
786 |/
787 o 0 a test 1970-01-01 00:00 +0000
787 o 0 a test 1970-01-01 00:00 +0000
788
788
789 $ hg st
789 $ hg st
790 M f
790 M f
791 ? f.orig
791 ? f.orig
792 $ cat f
792 $ cat f
793 <<<<<<< dest: 5f6b880e719b - shelve: pending changes temporary commit
793 <<<<<<< dest: 5f6b880e719b - shelve: pending changes temporary commit
794 g
794 g
795 =======
795 =======
796 f
796 f
797 >>>>>>> source: 81152db69da7 - shelve: changes to: commit stuff
797 >>>>>>> source: 81152db69da7 - shelve: changes to: commit stuff
798 $ cat f.orig
798 $ cat f.orig
799 g
799 g
800 $ hg unshelve --abort -t false
800 $ hg unshelve --abort -t false
801 tool option will be ignored
801 tool option will be ignored
802 rebase aborted
802 rebase aborted
803 unshelve of 'default' aborted
803 unshelve of 'default' aborted
804 $ hg st
804 $ hg st
805 M a
805 M a
806 ? f.orig
806 ? f.orig
807 $ cat f.orig
807 $ cat f.orig
808 g
808 g
809 $ hg unshelve
809 $ hg unshelve
810 unshelving change 'default'
810 unshelving change 'default'
811 temporarily committing pending changes (restore with 'hg unshelve --abort')
811 temporarily committing pending changes (restore with 'hg unshelve --abort')
812 rebasing shelved changes
812 rebasing shelved changes
813 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
813 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
814 $ hg st
814 $ hg st
815 M a
815 M a
816 A f
816 A f
817 ? f.orig
817 ? f.orig
818
818
819 other committed changes - merge:
819 other committed changes - merge:
820
820
821 $ hg shelve f
821 $ hg shelve f
822 shelved as default
822 shelved as default
823 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
823 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
824 $ hg ci a -m 'intermediate other change'
824 $ hg ci a -m 'intermediate other change'
825 $ mv f.orig f
825 $ mv f.orig f
826 $ hg unshelve
826 $ hg unshelve
827 unshelving change 'default'
827 unshelving change 'default'
828 rebasing shelved changes
828 rebasing shelved changes
829 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
829 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
830 merging f
830 merging f
831 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
831 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
832 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
832 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
833 [1]
833 [1]
834 $ hg st
834 $ hg st
835 M f
835 M f
836 ? f.orig
836 ? f.orig
837 $ cat f
837 $ cat f
838 <<<<<<< dest: * - test: intermediate other change (glob)
838 <<<<<<< dest: * - test: intermediate other change (glob)
839 g
839 g
840 =======
840 =======
841 f
841 f
842 >>>>>>> source: 81152db69da7 - shelve: changes to: commit stuff
842 >>>>>>> source: 81152db69da7 - shelve: changes to: commit stuff
843 $ cat f.orig
843 $ cat f.orig
844 g
844 g
845 $ hg unshelve --abort
845 $ hg unshelve --abort
846 rebase aborted
846 rebase aborted
847 unshelve of 'default' aborted
847 unshelve of 'default' aborted
848 $ hg st
848 $ hg st
849 ? f.orig
849 ? f.orig
850 $ cat f.orig
850 $ cat f.orig
851 g
851 g
852 $ hg shelve --delete default
852 $ hg shelve --delete default
853
853
854 Recreate some conflict again
854 Recreate some conflict again
855
855
856 $ cd ../repo
856 $ cd ../repo
857 $ hg up -C -r 3
857 $ hg up -C -r 3
858 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
858 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
859 (leaving bookmark test)
859 (leaving bookmark test)
860 $ echo y >> a/a
860 $ echo y >> a/a
861 $ hg shelve
861 $ hg shelve
862 shelved as default
862 shelved as default
863 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
863 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
864 $ hg up test
864 $ hg up test
865 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
865 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
866 (activating bookmark test)
866 (activating bookmark test)
867 $ hg bookmark
867 $ hg bookmark
868 * test 4:33f7f61e6c5e
868 * test 4:33f7f61e6c5e
869 $ hg unshelve
869 $ hg unshelve
870 unshelving change 'default'
870 unshelving change 'default'
871 rebasing shelved changes
871 rebasing shelved changes
872 rebasing 5:e42a7da90865 "changes to: second" (tip)
872 rebasing 5:e42a7da90865 "changes to: second" (tip)
873 merging a/a
873 merging a/a
874 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
874 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
875 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
875 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
876 [1]
876 [1]
877 $ hg bookmark
877 $ hg bookmark
878 test 4:33f7f61e6c5e
878 test 4:33f7f61e6c5e
879
879
880 Test that resolving all conflicts in one direction (so that the rebase
880 Test that resolving all conflicts in one direction (so that the rebase
881 is a no-op), works (issue4398)
881 is a no-op), works (issue4398)
882
882
883 $ hg revert -a -r .
883 $ hg revert -a -r .
884 reverting a/a (glob)
884 reverting a/a (glob)
885 $ hg resolve -m a/a
885 $ hg resolve -m a/a
886 (no more unresolved files)
886 (no more unresolved files)
887 continue: hg unshelve --continue
887 continue: hg unshelve --continue
888 $ hg unshelve -c
888 $ hg unshelve -c
889 rebasing 5:e42a7da90865 "changes to: second" (tip)
889 rebasing 5:e42a7da90865 "changes to: second" (tip)
890 note: rebase of 5:e42a7da90865 created no changes to commit
890 note: rebase of 5:e42a7da90865 created no changes to commit
891 unshelve of 'default' complete
891 unshelve of 'default' complete
892 $ hg bookmark
892 $ hg bookmark
893 * test 4:33f7f61e6c5e
893 * test 4:33f7f61e6c5e
894 $ hg diff
894 $ hg diff
895 $ hg status
895 $ hg status
896 ? a/a.orig
896 ? a/a.orig
897 ? foo/foo
897 ? foo/foo
898 $ hg summary
898 $ hg summary
899 parent: 4:33f7f61e6c5e tip
899 parent: 4:33f7f61e6c5e tip
900 create conflict
900 create conflict
901 branch: default
901 branch: default
902 bookmarks: *test
902 bookmarks: *test
903 commit: 2 unknown (clean)
903 commit: 2 unknown (clean)
904 update: (current)
904 update: (current)
905 phases: 5 draft
905 phases: 5 draft
906
906
907 $ hg shelve --delete --stat
907 $ hg shelve --delete --stat
908 abort: options '--delete' and '--stat' may not be used together
908 abort: options '--delete' and '--stat' may not be used together
909 [255]
909 [255]
910 $ hg shelve --delete --name NAME
910 $ hg shelve --delete --name NAME
911 abort: options '--delete' and '--name' may not be used together
911 abort: options '--delete' and '--name' may not be used together
912 [255]
912 [255]
913
913
914 Test interactive shelve
914 Test interactive shelve
915 $ cat <<EOF >> $HGRCPATH
915 $ cat <<EOF >> $HGRCPATH
916 > [ui]
916 > [ui]
917 > interactive = true
917 > interactive = true
918 > EOF
918 > EOF
919 $ echo 'a' >> a/b
919 $ echo 'a' >> a/b
920 $ cat a/a >> a/b
920 $ cat a/a >> a/b
921 $ echo 'x' >> a/b
921 $ echo 'x' >> a/b
922 $ mv a/b a/a
922 $ mv a/b a/a
923 $ echo 'a' >> foo/foo
923 $ echo 'a' >> foo/foo
924 $ hg st
924 $ hg st
925 M a/a
925 M a/a
926 ? a/a.orig
926 ? a/a.orig
927 ? foo/foo
927 ? foo/foo
928 $ cat a/a
928 $ cat a/a
929 a
929 a
930 a
930 a
931 c
931 c
932 x
932 x
933 x
933 x
934 $ cat foo/foo
934 $ cat foo/foo
935 foo
935 foo
936 a
936 a
937 $ hg shelve --interactive --config ui.interactive=false
937 $ hg shelve --interactive --config ui.interactive=false
938 abort: running non-interactively
938 abort: running non-interactively
939 [255]
939 [255]
940 $ hg shelve --interactive << EOF
940 $ hg shelve --interactive << EOF
941 > y
941 > y
942 > y
942 > y
943 > n
943 > n
944 > EOF
944 > EOF
945 diff --git a/a/a b/a/a
945 diff --git a/a/a b/a/a
946 2 hunks, 2 lines changed
946 2 hunks, 2 lines changed
947 examine changes to 'a/a'? [Ynesfdaq?] y
947 examine changes to 'a/a'? [Ynesfdaq?] y
948
948
949 @@ -1,3 +1,4 @@
949 @@ -1,3 +1,4 @@
950 +a
950 +a
951 a
951 a
952 c
952 c
953 x
953 x
954 record change 1/2 to 'a/a'? [Ynesfdaq?] y
954 record change 1/2 to 'a/a'? [Ynesfdaq?] y
955
955
956 @@ -1,3 +2,4 @@
956 @@ -1,3 +2,4 @@
957 a
957 a
958 c
958 c
959 x
959 x
960 +x
960 +x
961 record change 2/2 to 'a/a'? [Ynesfdaq?] n
961 record change 2/2 to 'a/a'? [Ynesfdaq?] n
962
962
963 shelved as test
963 shelved as test
964 merging a/a
964 merging a/a
965 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
965 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
966 $ cat a/a
966 $ cat a/a
967 a
967 a
968 c
968 c
969 x
969 x
970 x
970 x
971 $ cat foo/foo
971 $ cat foo/foo
972 foo
972 foo
973 a
973 a
974 $ hg st
974 $ hg st
975 M a/a
975 M a/a
976 ? foo/foo
976 ? foo/foo
977 $ hg bookmark
977 $ hg bookmark
978 * test 4:33f7f61e6c5e
978 * test 4:33f7f61e6c5e
979 $ hg unshelve
979 $ hg unshelve
980 unshelving change 'test'
980 unshelving change 'test'
981 temporarily committing pending changes (restore with 'hg unshelve --abort')
981 temporarily committing pending changes (restore with 'hg unshelve --abort')
982 rebasing shelved changes
982 rebasing shelved changes
983 rebasing 6:96a1354f65f6 "changes to: create conflict" (tip)
983 rebasing 6:96a1354f65f6 "changes to: create conflict" (tip)
984 merging a/a
984 merging a/a
985 $ hg bookmark
985 $ hg bookmark
986 * test 4:33f7f61e6c5e
986 * test 4:33f7f61e6c5e
987 $ cat a/a
987 $ cat a/a
988 a
988 a
989 a
989 a
990 c
990 c
991 x
991 x
992 x
992 x
993
993
994 shelve --patch and shelve --stat should work with valid shelfnames
994 shelve --patch and shelve --stat should work with valid shelfnames
995
995
996 $ hg up --clean .
996 $ hg up --clean .
997 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
997 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
998 (leaving bookmark test)
998 (leaving bookmark test)
999 $ hg shelve --list
999 $ hg shelve --list
1000 $ echo 'patch a' > shelf-patch-a
1000 $ echo 'patch a' > shelf-patch-a
1001 $ hg add shelf-patch-a
1001 $ hg add shelf-patch-a
1002 $ hg shelve
1002 $ hg shelve
1003 shelved as default
1003 shelved as default
1004 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1004 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1005 $ echo 'patch b' > shelf-patch-b
1005 $ echo 'patch b' > shelf-patch-b
1006 $ hg add shelf-patch-b
1006 $ hg add shelf-patch-b
1007 $ hg shelve
1007 $ hg shelve
1008 shelved as default-01
1008 shelved as default-01
1009 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1009 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1010 $ hg shelve --patch default default-01
1010 $ hg shelve --patch default default-01
1011 default-01 (*)* changes to: create conflict (glob)
1011 default-01 (*)* changes to: create conflict (glob)
1012
1012
1013 diff --git a/shelf-patch-b b/shelf-patch-b
1013 diff --git a/shelf-patch-b b/shelf-patch-b
1014 new file mode 100644
1014 new file mode 100644
1015 --- /dev/null
1015 --- /dev/null
1016 +++ b/shelf-patch-b
1016 +++ b/shelf-patch-b
1017 @@ -0,0 +1,1 @@
1017 @@ -0,0 +1,1 @@
1018 +patch b
1018 +patch b
1019 default (*)* changes to: create conflict (glob)
1019 default (*)* changes to: create conflict (glob)
1020
1020
1021 diff --git a/shelf-patch-a b/shelf-patch-a
1021 diff --git a/shelf-patch-a b/shelf-patch-a
1022 new file mode 100644
1022 new file mode 100644
1023 --- /dev/null
1023 --- /dev/null
1024 +++ b/shelf-patch-a
1024 +++ b/shelf-patch-a
1025 @@ -0,0 +1,1 @@
1025 @@ -0,0 +1,1 @@
1026 +patch a
1026 +patch a
1027 $ hg shelve --stat default default-01
1027 $ hg shelve --stat default default-01
1028 default-01 (*)* changes to: create conflict (glob)
1028 default-01 (*)* changes to: create conflict (glob)
1029 shelf-patch-b | 1 +
1029 shelf-patch-b | 1 +
1030 1 files changed, 1 insertions(+), 0 deletions(-)
1030 1 files changed, 1 insertions(+), 0 deletions(-)
1031 default (*)* changes to: create conflict (glob)
1031 default (*)* changes to: create conflict (glob)
1032 shelf-patch-a | 1 +
1032 shelf-patch-a | 1 +
1033 1 files changed, 1 insertions(+), 0 deletions(-)
1033 1 files changed, 1 insertions(+), 0 deletions(-)
1034 $ hg shelve --patch default
1034 $ hg shelve --patch default
1035 default (*)* changes to: create conflict (glob)
1035 default (*)* changes to: create conflict (glob)
1036
1036
1037 diff --git a/shelf-patch-a b/shelf-patch-a
1037 diff --git a/shelf-patch-a b/shelf-patch-a
1038 new file mode 100644
1038 new file mode 100644
1039 --- /dev/null
1039 --- /dev/null
1040 +++ b/shelf-patch-a
1040 +++ b/shelf-patch-a
1041 @@ -0,0 +1,1 @@
1041 @@ -0,0 +1,1 @@
1042 +patch a
1042 +patch a
1043 $ hg shelve --stat default
1043 $ hg shelve --stat default
1044 default (*)* changes to: create conflict (glob)
1044 default (*)* changes to: create conflict (glob)
1045 shelf-patch-a | 1 +
1045 shelf-patch-a | 1 +
1046 1 files changed, 1 insertions(+), 0 deletions(-)
1046 1 files changed, 1 insertions(+), 0 deletions(-)
1047 $ hg shelve --patch nonexistentshelf
1047 $ hg shelve --patch nonexistentshelf
1048 abort: cannot find shelf nonexistentshelf
1048 abort: cannot find shelf nonexistentshelf
1049 [255]
1049 [255]
1050 $ hg shelve --stat nonexistentshelf
1050 $ hg shelve --stat nonexistentshelf
1051 abort: cannot find shelf nonexistentshelf
1051 abort: cannot find shelf nonexistentshelf
1052 [255]
1052 [255]
1053 $ hg shelve --patch default nonexistentshelf
1053 $ hg shelve --patch default nonexistentshelf
1054 abort: cannot find shelf nonexistentshelf
1054 abort: cannot find shelf nonexistentshelf
1055 [255]
1055 [255]
1056 $ hg shelve --patch
1056 $ hg shelve --patch
1057 abort: --patch expects at least one shelf
1057 abort: --patch expects at least one shelf
1058 [255]
1058 [255]
1059
1059
1060 $ cd ..
1060 $ cd ..
1061
1061
1062 Shelve from general delta repo uses bundle2 on disk
1062 Shelve from general delta repo uses bundle2 on disk
1063 --------------------------------------------------
1063 --------------------------------------------------
1064
1064
1065 no general delta
1065 no general delta
1066
1066
1067 $ hg clone --pull repo bundle1 --config format.usegeneraldelta=0
1067 $ hg clone --pull repo bundle1 --config format.usegeneraldelta=0
1068 requesting all changes
1068 requesting all changes
1069 adding changesets
1069 adding changesets
1070 adding manifests
1070 adding manifests
1071 adding file changes
1071 adding file changes
1072 added 5 changesets with 8 changes to 6 files
1072 added 5 changesets with 8 changes to 6 files
1073 updating to branch default
1073 updating to branch default
1074 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
1074 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
1075 $ cd bundle1
1075 $ cd bundle1
1076 $ echo babar > jungle
1076 $ echo babar > jungle
1077 $ hg add jungle
1077 $ hg add jungle
1078 $ hg shelve
1078 $ hg shelve
1079 shelved as default
1079 shelved as default
1080 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1080 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1081 $ hg debugbundle .hg/shelved/*.hg
1081 $ hg debugbundle .hg/shelved/*.hg
1082 45993d65fe9dc3c6d8764b9c3b07fa831ee7d92d
1082 45993d65fe9dc3c6d8764b9c3b07fa831ee7d92d
1083 $ cd ..
1083 $ cd ..
1084
1084
1085 with general delta
1085 with general delta
1086
1086
1087 $ hg clone --pull repo bundle2 --config format.usegeneraldelta=1
1087 $ hg clone --pull repo bundle2 --config format.usegeneraldelta=1
1088 requesting all changes
1088 requesting all changes
1089 adding changesets
1089 adding changesets
1090 adding manifests
1090 adding manifests
1091 adding file changes
1091 adding file changes
1092 added 5 changesets with 8 changes to 6 files
1092 added 5 changesets with 8 changes to 6 files
1093 updating to branch default
1093 updating to branch default
1094 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
1094 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
1095 $ cd bundle2
1095 $ cd bundle2
1096 $ echo babar > jungle
1096 $ echo babar > jungle
1097 $ hg add jungle
1097 $ hg add jungle
1098 $ hg shelve
1098 $ hg shelve
1099 shelved as default
1099 shelved as default
1100 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1100 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1101 $ hg debugbundle .hg/shelved/*.hg
1101 $ hg debugbundle .hg/shelved/*.hg
1102 Stream params: sortdict([('Compression', 'BZ')])
1102 Stream params: sortdict([('Compression', 'BZ')])
1103 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
1103 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
1104 45993d65fe9dc3c6d8764b9c3b07fa831ee7d92d
1104 45993d65fe9dc3c6d8764b9c3b07fa831ee7d92d
1105 $ cd ..
1105 $ cd ..
1106
1106
1107 Test visibility of in-memory changes inside transaction to external hook
1107 Test visibility of in-memory changes inside transaction to external hook
1108 ------------------------------------------------------------------------
1108 ------------------------------------------------------------------------
1109
1109
1110 $ cd repo
1110 $ cd repo
1111
1111
1112 $ echo xxxx >> x
1112 $ echo xxxx >> x
1113 $ hg commit -m "#5: changes to invoke rebase"
1113 $ hg commit -m "#5: changes to invoke rebase"
1114
1114
1115 $ cat > $TESTTMP/checkvisibility.sh <<EOF
1115 $ cat > $TESTTMP/checkvisibility.sh <<EOF
1116 > echo "==== \$1:"
1116 > echo "==== \$1:"
1117 > hg parents --template "VISIBLE {rev}:{node|short}\n"
1117 > hg parents --template "VISIBLE {rev}:{node|short}\n"
1118 > # test that pending changes are hidden
1118 > # test that pending changes are hidden
1119 > unset HG_PENDING
1119 > unset HG_PENDING
1120 > hg parents --template "ACTUAL {rev}:{node|short}\n"
1120 > hg parents --template "ACTUAL {rev}:{node|short}\n"
1121 > echo "===="
1121 > echo "===="
1122 > EOF
1122 > EOF
1123
1123
1124 $ cat >> .hg/hgrc <<EOF
1124 $ cat >> .hg/hgrc <<EOF
1125 > [defaults]
1125 > [defaults]
1126 > # to fix hash id of temporary revisions
1126 > # to fix hash id of temporary revisions
1127 > unshelve = --date '0 0'
1127 > unshelve = --date '0 0'
1128 > EOF
1128 > EOF
1129
1129
1130 "hg unshelve" at REV5 implies steps below:
1130 "hg unshelve" at REV5 implies steps below:
1131
1131
1132 (1) commit changes in the working directory (REV6)
1132 (1) commit changes in the working directory (REV6)
1133 (2) unbundle shelved revision (REV7)
1133 (2) unbundle shelved revision (REV7)
1134 (3) rebase: merge REV7 into REV6 (REV6 => REV6, REV7)
1134 (3) rebase: merge REV7 into REV6 (REV6 => REV6, REV7)
1135 (4) rebase: commit merged revision (REV8)
1135 (4) rebase: commit merged revision (REV8)
1136 (5) rebase: update to REV6 (REV8 => REV6)
1136 (5) rebase: update to REV6 (REV8 => REV6)
1137 (6) update to REV5 (REV6 => REV5)
1137 (6) update to REV5 (REV6 => REV5)
1138 (7) abort transaction
1138 (7) abort transaction
1139
1139
1140 == test visibility to external preupdate hook
1140 == test visibility to external preupdate hook
1141
1141
1142 $ cat >> .hg/hgrc <<EOF
1142 $ cat >> .hg/hgrc <<EOF
1143 > [hooks]
1143 > [hooks]
1144 > preupdate.visibility = sh $TESTTMP/checkvisibility.sh preupdate
1144 > preupdate.visibility = sh $TESTTMP/checkvisibility.sh preupdate
1145 > EOF
1145 > EOF
1146
1146
1147 $ echo nnnn >> n
1147 $ echo nnnn >> n
1148
1148
1149 $ sh $TESTTMP/checkvisibility.sh before-unshelving
1149 $ sh $TESTTMP/checkvisibility.sh before-unshelving
1150 ==== before-unshelving:
1150 ==== before-unshelving:
1151 VISIBLE 5:703117a2acfb
1151 VISIBLE 5:703117a2acfb
1152 ACTUAL 5:703117a2acfb
1152 ACTUAL 5:703117a2acfb
1153 ====
1153 ====
1154
1154
1155 $ hg unshelve --keep default
1155 $ hg unshelve --keep default
1156 temporarily committing pending changes (restore with 'hg unshelve --abort')
1156 temporarily committing pending changes (restore with 'hg unshelve --abort')
1157 rebasing shelved changes
1157 rebasing shelved changes
1158 rebasing 7:206bf5d4f922 "changes to: create conflict" (tip)
1158 rebasing 7:206bf5d4f922 "changes to: create conflict" (tip)
1159 ==== preupdate:
1159 ==== preupdate:
1160 VISIBLE 6:66b86db80ee4
1160 VISIBLE 6:66b86db80ee4
1161 ACTUAL 5:703117a2acfb
1161 ACTUAL 5:703117a2acfb
1162 ====
1162 ====
1163 ==== preupdate:
1163 ==== preupdate:
1164 VISIBLE 8:a0e04704317e
1164 VISIBLE 8:a0e04704317e
1165 ACTUAL 5:703117a2acfb
1165 ACTUAL 5:703117a2acfb
1166 ====
1166 ====
1167 ==== preupdate:
1167 ==== preupdate:
1168 VISIBLE 6:66b86db80ee4
1168 VISIBLE 6:66b86db80ee4
1169 ACTUAL 5:703117a2acfb
1169 ACTUAL 5:703117a2acfb
1170 ====
1170 ====
1171
1171
1172 $ cat >> .hg/hgrc <<EOF
1172 $ cat >> .hg/hgrc <<EOF
1173 > [hooks]
1173 > [hooks]
1174 > preupdate.visibility =
1174 > preupdate.visibility =
1175 > EOF
1175 > EOF
1176
1176
1177 $ sh $TESTTMP/checkvisibility.sh after-unshelving
1177 $ sh $TESTTMP/checkvisibility.sh after-unshelving
1178 ==== after-unshelving:
1178 ==== after-unshelving:
1179 VISIBLE 5:703117a2acfb
1179 VISIBLE 5:703117a2acfb
1180 ACTUAL 5:703117a2acfb
1180 ACTUAL 5:703117a2acfb
1181 ====
1181 ====
1182
1182
1183 == test visibility to external update hook
1183 == test visibility to external update hook
1184
1184
1185 $ hg update -q -C 5
1185 $ hg update -q -C 5
1186
1186
1187 $ cat >> .hg/hgrc <<EOF
1187 $ cat >> .hg/hgrc <<EOF
1188 > [hooks]
1188 > [hooks]
1189 > update.visibility = sh $TESTTMP/checkvisibility.sh update
1189 > update.visibility = sh $TESTTMP/checkvisibility.sh update
1190 > EOF
1190 > EOF
1191
1191
1192 $ echo nnnn >> n
1192 $ echo nnnn >> n
1193
1193
1194 $ sh $TESTTMP/checkvisibility.sh before-unshelving
1194 $ sh $TESTTMP/checkvisibility.sh before-unshelving
1195 ==== before-unshelving:
1195 ==== before-unshelving:
1196 VISIBLE 5:703117a2acfb
1196 VISIBLE 5:703117a2acfb
1197 ACTUAL 5:703117a2acfb
1197 ACTUAL 5:703117a2acfb
1198 ====
1198 ====
1199
1199
1200 $ hg unshelve --keep default
1200 $ hg unshelve --keep default
1201 temporarily committing pending changes (restore with 'hg unshelve --abort')
1201 temporarily committing pending changes (restore with 'hg unshelve --abort')
1202 rebasing shelved changes
1202 rebasing shelved changes
1203 rebasing 7:206bf5d4f922 "changes to: create conflict" (tip)
1203 rebasing 7:206bf5d4f922 "changes to: create conflict" (tip)
1204 ==== update:
1204 ==== update:
1205 VISIBLE 6:66b86db80ee4
1205 VISIBLE 6:66b86db80ee4
1206 VISIBLE 7:206bf5d4f922
1206 VISIBLE 7:206bf5d4f922
1207 ACTUAL 5:703117a2acfb
1207 ACTUAL 5:703117a2acfb
1208 ====
1208 ====
1209 ==== update:
1209 ==== update:
1210 VISIBLE 6:66b86db80ee4
1210 VISIBLE 6:66b86db80ee4
1211 ACTUAL 5:703117a2acfb
1211 ACTUAL 5:703117a2acfb
1212 ====
1212 ====
1213 ==== update:
1213 ==== update:
1214 VISIBLE 5:703117a2acfb
1214 VISIBLE 5:703117a2acfb
1215 ACTUAL 5:703117a2acfb
1215 ACTUAL 5:703117a2acfb
1216 ====
1216 ====
1217
1217
1218 $ cat >> .hg/hgrc <<EOF
1218 $ cat >> .hg/hgrc <<EOF
1219 > [hooks]
1219 > [hooks]
1220 > update.visibility =
1220 > update.visibility =
1221 > EOF
1221 > EOF
1222
1222
1223 $ sh $TESTTMP/checkvisibility.sh after-unshelving
1223 $ sh $TESTTMP/checkvisibility.sh after-unshelving
1224 ==== after-unshelving:
1224 ==== after-unshelving:
1225 VISIBLE 5:703117a2acfb
1225 VISIBLE 5:703117a2acfb
1226 ACTUAL 5:703117a2acfb
1226 ACTUAL 5:703117a2acfb
1227 ====
1227 ====
1228
1228
1229 $ cd ..
1229 $ cd ..
1230
1230
1231 test .orig files go where the user wants them to
1231 test .orig files go where the user wants them to
1232 ---------------------------------------------------------------
1232 ---------------------------------------------------------------
1233 $ hg init salvage
1233 $ hg init salvage
1234 $ cd salvage
1234 $ cd salvage
1235 $ echo 'content' > root
1235 $ echo 'content' > root
1236 $ hg commit -A -m 'root' -q
1236 $ hg commit -A -m 'root' -q
1237 $ echo '' > root
1237 $ echo '' > root
1238 $ hg shelve -q
1238 $ hg shelve -q
1239 $ echo 'contADDent' > root
1239 $ echo 'contADDent' > root
1240 $ hg unshelve -q --config 'ui.origbackuppath=.hg/origbackups'
1240 $ hg unshelve -q --config 'ui.origbackuppath=.hg/origbackups'
1241 warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
1241 warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
1242 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1242 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1243 [1]
1243 [1]
1244 $ ls .hg/origbackups
1244 $ ls .hg/origbackups
1245 root.orig
1245 root.orig
1246 $ rm -rf .hg/origbackups
1246 $ rm -rf .hg/origbackups
1247
1247
1248 test Abort unshelve always gets user out of the unshelved state
1248 test Abort unshelve always gets user out of the unshelved state
1249 ---------------------------------------------------------------
1249 ---------------------------------------------------------------
1250 Wreak havoc on the unshelve process
1250 Wreak havoc on the unshelve process
1251 $ rm .hg/unshelverebasestate
1251 $ rm .hg/unshelverebasestate
1252 $ hg unshelve --abort
1252 $ hg unshelve --abort
1253 unshelve of 'default' aborted
1253 unshelve of 'default' aborted
1254 abort: (No such file or directory|The system cannot find the file specified) (re)
1254 abort: (No such file or directory|The system cannot find the file specified) (re)
1255 [255]
1255 [255]
1256 Can the user leave the current state?
1256 Can the user leave the current state?
1257 $ hg up -C .
1257 $ hg up -C .
1258 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1258 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1259
1259
1260 Try again but with a corrupted shelve state file
1260 Try again but with a corrupted shelve state file
1261 $ hg strip -r 2 -r 1 -q
1261 $ hg strip -r 2 -r 1 -q
1262 $ hg up -r 0 -q
1262 $ hg up -r 0 -q
1263 $ echo '' > root
1263 $ echo '' > root
1264 $ hg shelve -q
1264 $ hg shelve -q
1265 $ echo 'contADDent' > root
1265 $ echo 'contADDent' > root
1266 $ hg unshelve -q
1266 $ hg unshelve -q
1267 warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
1267 warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
1268 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1268 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1269 [1]
1269 [1]
1270 $ sed 's/ae8c668541e8/123456789012/' .hg/shelvedstate > ../corrupt-shelvedstate
1270 $ sed 's/ae8c668541e8/123456789012/' .hg/shelvedstate > ../corrupt-shelvedstate
1271 $ mv ../corrupt-shelvedstate .hg/histedit-state
1271 $ mv ../corrupt-shelvedstate .hg/histedit-state
1272 $ hg unshelve --abort 2>&1 | grep 'rebase aborted'
1272 $ hg unshelve --abort 2>&1 | grep 'rebase aborted'
1273 rebase aborted
1273 rebase aborted
1274 $ hg up -C .
1274 $ hg up -C .
1275 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1275 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1276
1276
1277 $ cd ..
1277 $ cd ..
1278
1278
1279 Keep active bookmark while (un)shelving even on shared repo (issue4940)
1279 Keep active bookmark while (un)shelving even on shared repo (issue4940)
1280 -----------------------------------------------------------------------
1280 -----------------------------------------------------------------------
1281
1281
1282 $ cat <<EOF >> $HGRCPATH
1282 $ cat <<EOF >> $HGRCPATH
1283 > [extensions]
1283 > [extensions]
1284 > share =
1284 > share =
1285 > EOF
1285 > EOF
1286
1286
1287 $ hg bookmarks -R repo
1287 $ hg bookmarks -R repo
1288 test 4:33f7f61e6c5e
1288 test 4:33f7f61e6c5e
1289 $ hg share -B repo share
1289 $ hg share -B repo share
1290 updating working directory
1290 updating working directory
1291 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
1291 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
1292 $ cd share
1292 $ cd share
1293
1293
1294 $ hg bookmarks
1294 $ hg bookmarks
1295 test 4:33f7f61e6c5e
1295 test 4:33f7f61e6c5e
1296 $ hg bookmarks foo
1296 $ hg bookmarks foo
1297 $ hg bookmarks
1297 $ hg bookmarks
1298 * foo 5:703117a2acfb
1298 * foo 5:703117a2acfb
1299 test 4:33f7f61e6c5e
1299 test 4:33f7f61e6c5e
1300 $ echo x >> x
1300 $ echo x >> x
1301 $ hg shelve
1301 $ hg shelve
1302 shelved as foo
1302 shelved as foo
1303 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1303 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1304 $ hg bookmarks
1304 $ hg bookmarks
1305 * foo 5:703117a2acfb
1305 * foo 5:703117a2acfb
1306 test 4:33f7f61e6c5e
1306 test 4:33f7f61e6c5e
1307
1307
1308 $ hg unshelve
1308 $ hg unshelve
1309 unshelving change 'foo'
1309 unshelving change 'foo'
1310 $ hg bookmarks
1310 $ hg bookmarks
1311 * foo 5:703117a2acfb
1311 * foo 5:703117a2acfb
1312 test 4:33f7f61e6c5e
1312 test 4:33f7f61e6c5e
1313
1313
1314 $ cd ..
1314 $ cd ..
1315
1315
1316 Shelve and unshelve unknown files. For the purposes of unshelve, a shelved
1316 Shelve and unshelve unknown files. For the purposes of unshelve, a shelved
1317 unknown file is the same as a shelved added file, except that it will be in
1317 unknown file is the same as a shelved added file, except that it will be in
1318 unknown state after unshelve if and only if it was either absent or unknown
1318 unknown state after unshelve if and only if it was either absent or unknown
1319 before the unshelve operation.
1319 before the unshelve operation.
1320
1320
1321 $ hg init unknowns
1321 $ hg init unknowns
1322 $ cd unknowns
1322 $ cd unknowns
1323
1323
1324 The simplest case is if I simply have an unknown file that I shelve and unshelve
1324 The simplest case is if I simply have an unknown file that I shelve and unshelve
1325
1325
1326 $ echo unknown > unknown
1326 $ echo unknown > unknown
1327 $ hg status
1327 $ hg status
1328 ? unknown
1328 ? unknown
1329 $ hg shelve --unknown
1329 $ hg shelve --unknown
1330 shelved as default
1330 shelved as default
1331 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1331 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1332 $ hg status
1332 $ hg status
1333 $ hg unshelve
1333 $ hg unshelve
1334 unshelving change 'default'
1334 unshelving change 'default'
1335 $ hg status
1335 $ hg status
1336 ? unknown
1336 ? unknown
1337 $ rm unknown
1337 $ rm unknown
1338
1338
1339 If I shelve, add the file, and unshelve, does it stay added?
1339 If I shelve, add the file, and unshelve, does it stay added?
1340
1340
1341 $ echo unknown > unknown
1341 $ echo unknown > unknown
1342 $ hg shelve -u
1342 $ hg shelve -u
1343 shelved as default
1343 shelved as default
1344 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1344 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1345 $ hg status
1345 $ hg status
1346 $ touch unknown
1346 $ touch unknown
1347 $ hg add unknown
1347 $ hg add unknown
1348 $ hg status
1348 $ hg status
1349 A unknown
1349 A unknown
1350 $ hg unshelve
1350 $ hg unshelve
1351 unshelving change 'default'
1351 unshelving change 'default'
1352 temporarily committing pending changes (restore with 'hg unshelve --abort')
1352 temporarily committing pending changes (restore with 'hg unshelve --abort')
1353 rebasing shelved changes
1353 rebasing shelved changes
1354 rebasing 1:098df96e7410 "(changes in empty repository)" (tip)
1354 rebasing 1:098df96e7410 "(changes in empty repository)" (tip)
1355 merging unknown
1355 merging unknown
1356 $ hg status
1356 $ hg status
1357 A unknown
1357 A unknown
1358 $ hg forget unknown
1358 $ hg forget unknown
1359 $ rm unknown
1359 $ rm unknown
1360
1360
1361 And if I shelve, commit, then unshelve, does it become modified?
1361 And if I shelve, commit, then unshelve, does it become modified?
1362
1362
1363 $ echo unknown > unknown
1363 $ echo unknown > unknown
1364 $ hg shelve -u
1364 $ hg shelve -u
1365 shelved as default
1365 shelved as default
1366 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1366 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1367 $ hg status
1367 $ hg status
1368 $ touch unknown
1368 $ touch unknown
1369 $ hg add unknown
1369 $ hg add unknown
1370 $ hg commit -qm "Add unknown"
1370 $ hg commit -qm "Add unknown"
1371 $ hg status
1371 $ hg status
1372 $ hg unshelve
1372 $ hg unshelve
1373 unshelving change 'default'
1373 unshelving change 'default'
1374 rebasing shelved changes
1374 rebasing shelved changes
1375 rebasing 1:098df96e7410 "(changes in empty repository)" (tip)
1375 rebasing 1:098df96e7410 "(changes in empty repository)" (tip)
1376 merging unknown
1376 merging unknown
1377 $ hg status
1377 $ hg status
1378 M unknown
1378 M unknown
1379 $ hg remove --force unknown
1379 $ hg remove --force unknown
1380 $ hg commit -qm "Remove unknown"
1380 $ hg commit -qm "Remove unknown"
1381
1381
1382 $ cd ..
1382 $ cd ..
1383
1383
1384 We expects that non-bare shelve keeps newly created branch in
1384 We expects that non-bare shelve keeps newly created branch in
1385 working directory.
1385 working directory.
1386
1386
1387 $ hg init shelve-preserve-new-branch
1387 $ hg init shelve-preserve-new-branch
1388 $ cd shelve-preserve-new-branch
1388 $ cd shelve-preserve-new-branch
1389 $ echo "a" >> a
1389 $ echo "a" >> a
1390 $ hg add a
1390 $ hg add a
1391 $ echo "b" >> b
1391 $ echo "b" >> b
1392 $ hg add b
1392 $ hg add b
1393 $ hg commit -m "ab"
1393 $ hg commit -m "ab"
1394 $ echo "aa" >> a
1394 $ echo "aa" >> a
1395 $ echo "bb" >> b
1395 $ echo "bb" >> b
1396 $ hg branch new-branch
1396 $ hg branch new-branch
1397 marked working directory as branch new-branch
1397 marked working directory as branch new-branch
1398 (branches are permanent and global, did you want a bookmark?)
1398 (branches are permanent and global, did you want a bookmark?)
1399 $ hg status
1399 $ hg status
1400 M a
1400 M a
1401 M b
1401 M b
1402 $ hg branch
1402 $ hg branch
1403 new-branch
1403 new-branch
1404 $ hg shelve a
1404 $ hg shelve a
1405 shelved as default
1405 shelved as default
1406 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1406 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1407 $ hg branch
1407 $ hg branch
1408 new-branch
1408 new-branch
1409 $ hg status
1409 $ hg status
1410 M b
1410 M b
1411 $ touch "c" >> c
1411 $ touch "c" >> c
1412 $ hg add c
1412 $ hg add c
1413 $ hg status
1413 $ hg status
1414 M b
1414 M b
1415 A c
1415 A c
1416 $ hg shelve --exclude c
1416 $ hg shelve --exclude c
1417 shelved as default-01
1417 shelved as default-01
1418 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1418 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1419 $ hg branch
1419 $ hg branch
1420 new-branch
1420 new-branch
1421 $ hg status
1421 $ hg status
1422 A c
1422 A c
1423 $ hg shelve --include c
1423 $ hg shelve --include c
1424 shelved as default-02
1424 shelved as default-02
1425 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1425 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1426 $ hg branch
1426 $ hg branch
1427 new-branch
1427 new-branch
1428 $ hg status
1428 $ hg status
1429 $ echo "d" >> d
1429 $ echo "d" >> d
1430 $ hg add d
1430 $ hg add d
1431 $ hg status
1431 $ hg status
1432 A d
1432 A d
1433
1433
1434 We expect that bare-shelve will not keep branch in current working directory.
1434 We expect that bare-shelve will not keep branch in current working directory.
1435
1435
1436 $ hg shelve
1436 $ hg shelve
1437 shelved as default-03
1437 shelved as default-03
1438 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1438 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1439 $ hg branch
1439 $ hg branch
1440 default
1440 default
1441 $ cd ..
1441 $ cd ..
1442
1442
1443 When i shelve commit on newly created branch i expect
1443 When i shelve commit on newly created branch i expect
1444 that after unshelve newly created branch will be preserved.
1444 that after unshelve newly created branch will be preserved.
1445
1445
1446 $ hg init shelve_on_new_branch_simple
1446 $ hg init shelve_on_new_branch_simple
1447 $ cd shelve_on_new_branch_simple
1447 $ cd shelve_on_new_branch_simple
1448 $ echo "aaa" >> a
1448 $ echo "aaa" >> a
1449 $ hg commit -A -m "a"
1449 $ hg commit -A -m "a"
1450 adding a
1450 adding a
1451 $ hg branch
1451 $ hg branch
1452 default
1452 default
1453 $ hg branch test
1453 $ hg branch test
1454 marked working directory as branch test
1454 marked working directory as branch test
1455 (branches are permanent and global, did you want a bookmark?)
1455 (branches are permanent and global, did you want a bookmark?)
1456 $ echo "bbb" >> a
1456 $ echo "bbb" >> a
1457 $ hg status
1457 $ hg status
1458 M a
1458 M a
1459 $ hg shelve
1459 $ hg shelve
1460 shelved as default
1460 shelved as default
1461 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1461 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1462 $ hg branch
1462 $ hg branch
1463 default
1463 default
1464 $ echo "bbb" >> b
1464 $ echo "bbb" >> b
1465 $ hg status
1465 $ hg status
1466 ? b
1466 ? b
1467 $ hg unshelve
1467 $ hg unshelve
1468 unshelving change 'default'
1468 unshelving change 'default'
1469 marked working directory as branch test
1469 marked working directory as branch test
1470 $ hg status
1470 $ hg status
1471 M a
1471 M a
1472 ? b
1472 ? b
1473 $ hg branch
1473 $ hg branch
1474 test
1474 test
1475 $ cd ..
1475 $ cd ..
1476
1476
1477 When i shelve commit on newly created branch, make
1477 When i shelve commit on newly created branch, make
1478 some changes, unshelve it and running into merge
1478 some changes, unshelve it and running into merge
1479 conflicts i expect that after fixing them and
1479 conflicts i expect that after fixing them and
1480 running unshelve --continue newly created branch
1480 running unshelve --continue newly created branch
1481 will be preserved.
1481 will be preserved.
1482
1482
1483 $ hg init shelve_on_new_branch_conflict
1483 $ hg init shelve_on_new_branch_conflict
1484 $ cd shelve_on_new_branch_conflict
1484 $ cd shelve_on_new_branch_conflict
1485 $ echo "aaa" >> a
1485 $ echo "aaa" >> a
1486 $ hg commit -A -m "a"
1486 $ hg commit -A -m "a"
1487 adding a
1487 adding a
1488 $ hg branch
1488 $ hg branch
1489 default
1489 default
1490 $ hg branch test
1490 $ hg branch test
1491 marked working directory as branch test
1491 marked working directory as branch test
1492 (branches are permanent and global, did you want a bookmark?)
1492 (branches are permanent and global, did you want a bookmark?)
1493 $ echo "bbb" >> a
1493 $ echo "bbb" >> a
1494 $ hg status
1494 $ hg status
1495 M a
1495 M a
1496 $ hg shelve
1496 $ hg shelve
1497 shelved as default
1497 shelved as default
1498 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1498 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1499 $ hg branch
1499 $ hg branch
1500 default
1500 default
1501 $ echo "ccc" >> a
1501 $ echo "ccc" >> a
1502 $ hg status
1502 $ hg status
1503 M a
1503 M a
1504 $ hg unshelve
1504 $ hg unshelve
1505 unshelving change 'default'
1505 unshelving change 'default'
1506 temporarily committing pending changes (restore with 'hg unshelve --abort')
1506 temporarily committing pending changes (restore with 'hg unshelve --abort')
1507 rebasing shelved changes
1507 rebasing shelved changes
1508 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1508 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1509 merging a
1509 merging a
1510 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
1510 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
1511 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1511 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1512 [1]
1512 [1]
1513 $ echo "aaabbbccc" > a
1513 $ echo "aaabbbccc" > a
1514 $ rm a.orig
1514 $ rm a.orig
1515 $ hg resolve --mark a
1515 $ hg resolve --mark a
1516 (no more unresolved files)
1516 (no more unresolved files)
1517 continue: hg unshelve --continue
1517 continue: hg unshelve --continue
1518 $ hg unshelve --continue
1518 $ hg unshelve --continue
1519 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1519 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1520 marked working directory as branch test
1520 marked working directory as branch test
1521 unshelve of 'default' complete
1521 unshelve of 'default' complete
1522 $ cat a
1522 $ cat a
1523 aaabbbccc
1523 aaabbbccc
1524 $ hg status
1524 $ hg status
1525 M a
1525 M a
1526 $ hg branch
1526 $ hg branch
1527 test
1527 test
1528 $ hg commit -m "test-commit"
1528 $ hg commit -m "test-commit"
1529
1529
1530 When i shelve on test branch, update to default branch
1530 When i shelve on test branch, update to default branch
1531 and unshelve i expect that it will not preserve previous
1531 and unshelve i expect that it will not preserve previous
1532 test branch.
1532 test branch.
1533
1533
1534 $ echo "xxx" > b
1534 $ echo "xxx" > b
1535 $ hg add b
1535 $ hg add b
1536 $ hg shelve
1536 $ hg shelve
1537 shelved as test
1537 shelved as test
1538 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1538 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1539 $ hg update -r default
1539 $ hg update -r default
1540 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1540 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1541 $ hg unshelve
1541 $ hg unshelve
1542 unshelving change 'test'
1542 unshelving change 'test'
1543 rebasing shelved changes
1543 rebasing shelved changes
1544 rebasing 2:357525f34729 "changes to: test-commit" (tip)
1544 rebasing 2:357525f34729 "changes to: test-commit" (tip)
1545 $ hg status
1545 $ hg status
1546 A b
1546 A b
1547 $ hg branch
1547 $ hg branch
1548 default
1548 default
1549 $ cd ..
1549 $ cd ..
1550
1550
1551 When i unshelve resulting in merge conflicts and makes saved
1551 When i unshelve resulting in merge conflicts and makes saved
1552 file shelvedstate looks like in previous versions in
1552 file shelvedstate looks like in previous versions in
1553 mercurial(without restore branch information in 7th line) i
1553 mercurial(without restore branch information in 7th line) i
1554 expect that after resolving conflicts and successfully
1554 expect that after resolving conflicts and successfully
1555 running 'shelve --continue' the branch information won't be
1555 running 'shelve --continue' the branch information won't be
1556 restored and branch will be unchanged.
1556 restored and branch will be unchanged.
1557
1557
1558 shelve on new branch, conflict with previous shelvedstate
1558 shelve on new branch, conflict with previous shelvedstate
1559
1559
1560 $ hg init conflict
1560 $ hg init conflict
1561 $ cd conflict
1561 $ cd conflict
1562 $ echo "aaa" >> a
1562 $ echo "aaa" >> a
1563 $ hg commit -A -m "a"
1563 $ hg commit -A -m "a"
1564 adding a
1564 adding a
1565 $ hg branch
1565 $ hg branch
1566 default
1566 default
1567 $ hg branch test
1567 $ hg branch test
1568 marked working directory as branch test
1568 marked working directory as branch test
1569 (branches are permanent and global, did you want a bookmark?)
1569 (branches are permanent and global, did you want a bookmark?)
1570 $ echo "bbb" >> a
1570 $ echo "bbb" >> a
1571 $ hg status
1571 $ hg status
1572 M a
1572 M a
1573 $ hg shelve
1573 $ hg shelve
1574 shelved as default
1574 shelved as default
1575 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1575 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1576 $ hg branch
1576 $ hg branch
1577 default
1577 default
1578 $ echo "ccc" >> a
1578 $ echo "ccc" >> a
1579 $ hg status
1579 $ hg status
1580 M a
1580 M a
1581 $ hg unshelve
1581 $ hg unshelve
1582 unshelving change 'default'
1582 unshelving change 'default'
1583 temporarily committing pending changes (restore with 'hg unshelve --abort')
1583 temporarily committing pending changes (restore with 'hg unshelve --abort')
1584 rebasing shelved changes
1584 rebasing shelved changes
1585 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1585 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1586 merging a
1586 merging a
1587 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
1587 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
1588 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1588 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1589 [1]
1589 [1]
1590
1590
1591 Removing restore branch information from shelvedstate file(making it looks like
1591 Removing restore branch information from shelvedstate file(making it looks like
1592 in previous versions) and running unshelve --continue
1592 in previous versions) and running unshelve --continue
1593
1593
1594 $ head -n 6 < .hg/shelvedstate > .hg/shelvedstate_oldformat
1594 $ head -n 6 < .hg/shelvedstate > .hg/shelvedstate_oldformat
1595 $ rm .hg/shelvedstate
1595 $ rm .hg/shelvedstate
1596 $ mv .hg/shelvedstate_oldformat .hg/shelvedstate
1596 $ mv .hg/shelvedstate_oldformat .hg/shelvedstate
1597
1597
1598 $ echo "aaabbbccc" > a
1598 $ echo "aaabbbccc" > a
1599 $ rm a.orig
1599 $ rm a.orig
1600 $ hg resolve --mark a
1600 $ hg resolve --mark a
1601 (no more unresolved files)
1601 (no more unresolved files)
1602 continue: hg unshelve --continue
1602 continue: hg unshelve --continue
1603 $ hg unshelve --continue
1603 $ hg unshelve --continue
1604 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1604 rebasing 2:425c97ef07f3 "changes to: a" (tip)
1605 unshelve of 'default' complete
1605 unshelve of 'default' complete
1606 $ cat a
1606 $ cat a
1607 aaabbbccc
1607 aaabbbccc
1608 $ hg status
1608 $ hg status
1609 M a
1609 M a
1610 $ hg branch
1610 $ hg branch
1611 default
1611 default
1612 $ cd ..
1612 $ cd ..
1613
1613
1614 On non bare shelve the branch information shouldn't be restored
1614 On non bare shelve the branch information shouldn't be restored
1615
1615
1616 $ hg init bare_shelve_on_new_branch
1616 $ hg init bare_shelve_on_new_branch
1617 $ cd bare_shelve_on_new_branch
1617 $ cd bare_shelve_on_new_branch
1618 $ echo "aaa" >> a
1618 $ echo "aaa" >> a
1619 $ hg commit -A -m "a"
1619 $ hg commit -A -m "a"
1620 adding a
1620 adding a
1621 $ hg branch
1621 $ hg branch
1622 default
1622 default
1623 $ hg branch test
1623 $ hg branch test
1624 marked working directory as branch test
1624 marked working directory as branch test
1625 (branches are permanent and global, did you want a bookmark?)
1625 (branches are permanent and global, did you want a bookmark?)
1626 $ echo "bbb" >> a
1626 $ echo "bbb" >> a
1627 $ hg status
1627 $ hg status
1628 M a
1628 M a
1629 $ hg shelve a
1629 $ hg shelve a
1630 shelved as default
1630 shelved as default
1631 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1631 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1632 $ hg branch
1632 $ hg branch
1633 test
1633 test
1634 $ hg branch default
1634 $ hg branch default
1635 marked working directory as branch default
1635 marked working directory as branch default
1636 (branches are permanent and global, did you want a bookmark?)
1636 (branches are permanent and global, did you want a bookmark?)
1637 $ echo "bbb" >> b
1637 $ echo "bbb" >> b
1638 $ hg status
1638 $ hg status
1639 ? b
1639 ? b
1640 $ hg unshelve
1640 $ hg unshelve
1641 unshelving change 'default'
1641 unshelving change 'default'
1642 $ hg status
1642 $ hg status
1643 M a
1643 M a
1644 ? b
1644 ? b
1645 $ hg branch
1645 $ hg branch
1646 default
1646 default
1647 $ cd ..
1647 $ cd ..
1648
1648
1649 Prepare unshelve with a corrupted shelvedstate
1649 Prepare unshelve with a corrupted shelvedstate
1650 $ hg init r1 && cd r1
1650 $ hg init r1 && cd r1
1651 $ echo text1 > file && hg add file
1651 $ echo text1 > file && hg add file
1652 $ hg shelve
1652 $ hg shelve
1653 shelved as default
1653 shelved as default
1654 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1654 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1655 $ echo text2 > file && hg ci -Am text1
1655 $ echo text2 > file && hg ci -Am text1
1656 adding file
1656 adding file
1657 $ hg unshelve
1657 $ hg unshelve
1658 unshelving change 'default'
1658 unshelving change 'default'
1659 rebasing shelved changes
1659 rebasing shelved changes
1660 rebasing 1:396ea74229f9 "(changes in empty repository)" (tip)
1660 rebasing 1:396ea74229f9 "(changes in empty repository)" (tip)
1661 merging file
1661 merging file
1662 warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
1662 warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
1663 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1663 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1664 [1]
1664 [1]
1665 $ echo somethingsomething > .hg/shelvedstate
1665 $ echo somethingsomething > .hg/shelvedstate
1666
1666
1667 Unshelve --continue fails with appropriate message if shelvedstate is corrupted
1667 Unshelve --continue fails with appropriate message if shelvedstate is corrupted
1668 $ hg unshelve --continue
1668 $ hg unshelve --continue
1669 abort: corrupted shelved state file
1669 abort: corrupted shelved state file
1670 (please run hg unshelve --abort to abort unshelve operation)
1670 (please run hg unshelve --abort to abort unshelve operation)
1671 [255]
1671 [255]
1672
1672
1673 Unshelve --abort works with a corrupted shelvedstate
1673 Unshelve --abort works with a corrupted shelvedstate
1674 $ hg unshelve --abort
1674 $ hg unshelve --abort
1675 could not read shelved state file, your working copy may be in an unexpected state
1675 could not read shelved state file, your working copy may be in an unexpected state
1676 please update to some commit
1676 please update to some commit
1677
1677
1678 Unshelve --abort fails with appropriate message if there's no unshelve in
1678 Unshelve --abort fails with appropriate message if there's no unshelve in
1679 progress
1679 progress
1680 $ hg unshelve --abort
1680 $ hg unshelve --abort
1681 abort: no unshelve in progress
1681 abort: no unshelve in progress
1682 [255]
1682 [255]
1683 $ cd ..
1683 $ cd ..
1684
1684
1685 Unshelve respects --keep even if user intervention is needed
1685 Unshelve respects --keep even if user intervention is needed
1686 $ hg init unshelvekeep && cd unshelvekeep
1686 $ hg init unshelvekeep && cd unshelvekeep
1687 $ echo 1 > file && hg ci -Am 1
1687 $ echo 1 > file && hg ci -Am 1
1688 adding file
1688 adding file
1689 $ echo 2 >> file
1689 $ echo 2 >> file
1690 $ hg shelve
1690 $ hg shelve
1691 shelved as default
1691 shelved as default
1692 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1692 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1693 $ echo 3 >> file && hg ci -Am 13
1693 $ echo 3 >> file && hg ci -Am 13
1694 $ hg shelve --list
1694 $ hg shelve --list
1695 default (1s ago) changes to: 1
1695 default (*s ago) changes to: 1 (glob)
1696 $ hg unshelve --keep
1696 $ hg unshelve --keep
1697 unshelving change 'default'
1697 unshelving change 'default'
1698 rebasing shelved changes
1698 rebasing shelved changes
1699 rebasing 2:3fbe6fbb0bef "changes to: 1" (tip)
1699 rebasing 2:3fbe6fbb0bef "changes to: 1" (tip)
1700 merging file
1700 merging file
1701 warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
1701 warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
1702 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1702 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
1703 [1]
1703 [1]
1704 $ hg resolve --mark file
1704 $ hg resolve --mark file
1705 (no more unresolved files)
1705 (no more unresolved files)
1706 continue: hg unshelve --continue
1706 continue: hg unshelve --continue
1707 $ hg unshelve --continue
1707 $ hg unshelve --continue
1708 rebasing 2:3fbe6fbb0bef "changes to: 1" (tip)
1708 rebasing 2:3fbe6fbb0bef "changes to: 1" (tip)
1709 unshelve of 'default' complete
1709 unshelve of 'default' complete
1710 $ hg shelve --list
1710 $ hg shelve --list
1711 default (*s ago) changes to: 1 (glob)
1711 default (*s ago) changes to: 1 (glob)
1712 $ cd ..
1712 $ cd ..
1713
1713
1714 Unshelving when there are deleted files does not crash (issue4176)
1714 Unshelving when there are deleted files does not crash (issue4176)
1715 $ hg init unshelve-deleted-file && cd unshelve-deleted-file
1715 $ hg init unshelve-deleted-file && cd unshelve-deleted-file
1716 $ echo a > a && echo b > b && hg ci -Am ab
1716 $ echo a > a && echo b > b && hg ci -Am ab
1717 adding a
1717 adding a
1718 adding b
1718 adding b
1719 $ echo aa > a && hg shelve
1719 $ echo aa > a && hg shelve
1720 shelved as default
1720 shelved as default
1721 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1721 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1722 $ rm b
1722 $ rm b
1723 $ hg st
1723 $ hg st
1724 ! b
1724 ! b
1725 $ hg unshelve
1725 $ hg unshelve
1726 unshelving change 'default'
1726 unshelving change 'default'
1727 $ hg shelve
1727 $ hg shelve
1728 shelved as default
1728 shelved as default
1729 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1729 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1730 $ rm a && echo b > b
1730 $ rm a && echo b > b
1731 $ hg st
1731 $ hg st
1732 ! a
1732 ! a
1733 $ hg unshelve
1733 $ hg unshelve
1734 unshelving change 'default'
1734 unshelving change 'default'
1735 abort: shelved change touches missing files
1735 abort: shelved change touches missing files
1736 (run hg status to see which files are missing)
1736 (run hg status to see which files are missing)
1737 [255]
1737 [255]
1738 $ hg st
1738 $ hg st
1739 ! a
1739 ! a
General Comments 0
You need to be logged in to leave comments. Login now