1
$ echo "[extensions]" >> $HGRCPATH
2
$ echo "mq=" >> $HGRCPATH
3
$ echo "shelve=" >> $HGRCPATH
4
$ echo "[defaults]" >> $HGRCPATH
5
$ echo "diff = --nodates --git" >> $HGRCPATH
6
$ echo "qnew = --date '0 0'" >> $HGRCPATH
18
shelving in an empty repo should be possible
22
0 files updated, 0 files merged, 5 files removed, 0 files unresolved
25
unshelving change 'default'
29
added 1 changesets with 5 changes to 5 files
31
$ hg commit -q -m 'initial commit'
37
create an mq patch - shelving should work fine with a patch applied
41
$ hg commit n -m second
42
$ hg qnew second.patch
44
shelve a change that we will delete later
49
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
51
set up some more complex changes to shelve
55
moving b/b to b.rename/b (glob)
65
prevent some foot-shooting
67
$ hg shelve -n foo/bar
68
abort: shelved change names may not contain slashes
71
abort: shelved change names may not start with '.'
74
the common case - no options or filenames
78
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
81
ensure that our shelved changes exist
84
default-01 (*) [mq]: second.patch (glob)
85
default (*) [mq]: second.patch (glob)
87
$ hg shelve -l -p default
88
default (*) [mq]: second.patch (glob)
90
diff --git a/a/a b/a/a
97
delete our older shelved change
99
$ hg shelve -d default
102
local edits should not prevent a shelved change from applying
104
$ printf "z\na\n" > a/a
106
unshelving change 'default-01'
110
added 1 changesets with 3 changes to 8 files (+1 heads)
114
$ rm a/a.orig b.rename/b c.copy
116
apply it and make sure our state is as expected
119
unshelving change 'default-01'
123
added 1 changesets with 3 changes to 8 files
134
abort: no shelved changes to apply!
137
abort: shelved change 'foo' not found
140
named shelves, specific filenames, and "commit messages" should all work
149
$ hg shelve -q -n wibble -m wat a
151
expect "a" to no longer be present, but status otherwise unchanged
159
$ hg shelve -l --stat
160
wibble (*) wat (glob)
162
1 files changed, 1 insertions(+), 0 deletions(-)
164
and now "a/a" should reappear
167
$ hg unshelve -q wibble
177
cause unshelving to result in a merge with 'a' conflicting
181
$ hg commit -m second
182
$ hg tip --template '{files}\n'
185
add an unrelated change that should be preserved
191
force a conflicted merge to occur
194
unshelving change 'default'
198
added 1 changesets with 3 changes to 8 files (+1 heads)
200
warning: conflicts during merge.
201
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
202
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
205
ensure that we have a merge with unresolved conflicts
207
$ hg heads -q --template '{rev}\n'
210
$ hg parents -q --template '{rev}\n'
220
diff --git a/a/a b/a/a
230
diff --git a/b.rename/b b/b.rename/b
236
diff --git a/b/b b/b/b
237
deleted file mode 100644
242
diff --git a/c.copy b/c.copy
252
abort: unshelve already in progress
253
(use 'hg unshelve --continue' or 'hg unshelve --abort')
256
abort the unshelve and be happy
266
unshelve of 'default' aborted
270
changeset: 3:2e69b451d1ea
273
date: Thu Jan 01 00:00:00 1970 +0000
281
try to continue with no unshelve underway
284
abort: no unshelve operation underway
290
redo the unshelve to get a conflict
293
warning: conflicts during merge.
294
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
295
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
301
abort: unresolved conflicts, can't continue
302
(see 'hg resolve', then 'hg unshelve --continue')
308
$ hg commit -m 'commit while unshelve in progress'
309
abort: unshelve already in progress
310
(use 'hg unshelve --continue' or 'hg unshelve --abort')
314
unshelve of 'default' complete
316
ensure the repo is as we hope
319
changeset: 3:2e69b451d1ea
322
date: Thu Jan 01 00:00:00 1970 +0000
337
there should be no shelves left
343
ensure that metadata-only changes are shelved
346
$ hg shelve -q -n execbit a/a
348
$ hg unshelve -q execbit
359
$ hg shelve -q -n symlink a/a
361
$ hg unshelve -q symlink
368
set up another conflict between a commit and a shelved change
371
$ rm a/a.orig b.rename/b c.copy
375
$ hg ci -m 'create conflict'
378
if we resolve a conflict while unshelving, the unshelve should succeed
380
$ HGMERGE=true hg unshelve
381
unshelving change 'default'
385
added 1 changesets with 1 changes to 6 files (+1 heads)
397
test keep and cleanup
401
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
403
default (*) create conflict (glob)
405
unshelving change 'default'
409
added 1 changesets with 1 changes to 7 files
411
default (*) create conflict (glob)
412
$ hg shelve --cleanup
419
* test 4:33f7f61e6c5e
422
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
424
* test 4:33f7f61e6c5e
426
unshelving change 'test'
430
added 1 changesets with 1 changes to 7 files
432
* test 4:33f7f61e6c5e
434
shelve should still work even if mq is disabled
436
$ hg --config extensions.mq=! shelve
438
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
439
$ hg --config extensions.mq=! shelve --list
440
test (1s ago) create conflict
441
$ hg --config extensions.mq=! unshelve
442
unshelving change 'test'
446
added 1 changesets with 1 changes to 7 files
448
shelve should leave dirstate clean (issue 4055)
451
$ hg init shelverebase
453
$ printf 'x\ny\n' > x
459
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
460
$ printf 'a\nx\ny\nz\n' > x
465
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
466
$ hg rebase -d 1 --config extensions.rebase=
468
saved backup bundle to $TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-backup.hg (glob)
470
unshelving change 'default'
474
added 2 changesets with 2 changes to 2 files (+1 heads)
480
shelve should only unshelve pending changes (issue 4068)
482
$ hg init onlypendingchanges
483
$ cd onlypendingchanges
496
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
499
unshelving change 'default'
503
added 1 changesets with 1 changes to 3 files
507
unshelve should work on an ancestor of the original commit
511
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
513
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
515
unshelving change 'default'
519
added 1 changesets with 1 changes to 3 files