##// END OF EJS Templates
pycompat: custom implementation of urllib.parse.quote()...
pycompat: custom implementation of urllib.parse.quote() urllib.parse.quote() accepts either str or bytes and returns str. There exists a urllib.parse.quote_from_bytes() which only accepts bytes. We should probably use that to retain strong typing and avoid surprises. In addition, since nearly all strings in Mercurial are bytes, we probably don't want quote() returning unicode. So, this patch implements a custom quote() that only accepts bytes and returns bytes. The quoted URL should only contain URL safe characters which is a strict subset of ASCII. So `.encode('ascii', 'strict')` should be safe.

File last commit:

r31228:51934fc7 default
r31400:fb1f7033 default
Show More
test-shelve.t
1739 lines | 42.4 KiB | text/troff | Tads3Lexer
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [extensions]
> mq =
> shelve =
> [defaults]
> diff = --nodates --git
> qnew = --date '0 0'
Colin Chan
shelve: only keep the latest N shelve backups...
r25713 > [shelve]
> maxbackups = 2
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 > EOF
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
$ hg init repo
$ cd repo
$ mkdir a b
$ echo a > a/a
$ echo b > b/b
$ echo c > c
$ echo d > d
$ echo x > x
$ hg addremove -q
Laurent Charignon
shelve: add interactive mode command line option
r24477 shelve has a help message
$ hg shelve -h
hg shelve [OPTION]... [FILE]...
save and set aside changes from the working directory
Shelving takes files that "hg status" reports as not clean, saves the
modifications to a bundle (a shelved change), and reverts the files so
that their state in the working directory becomes clean.
To restore these changes to the working directory, using "hg unshelve";
this will work even if you switch to a different commit.
When no files are specified, "hg shelve" saves all not-clean files. If
specific files or directories are named, only changes to those files are
shelved.
Mads Kiilerich
shelve: add missing space in help text...
r30419 In bare shelve (when no files are specified, without interactive, include
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573 and exclude option), shelving remembers information if the working
directory was on newly created branch, in other words working directory
was on different branch than its first parent. In this situation
unshelving restores branch information to the working directory.
Laurent Charignon
shelve: add interactive mode command line option
r24477 Each shelved change has a name that makes it easier to find later. The
name of a shelved change defaults to being based on the active bookmark,
or if there is no active bookmark, the current named branch. To specify a
different name, use "--name".
To see a list of existing shelved changes, use the "--list" option. For
each shelved change, this will print its name, age, and description; use "
--patch" or "--stat" for more details.
To delete specific shelved changes, use "--delete". To delete all shelved
changes, use "--cleanup".
timeless
help: use single quotes in use warning
r29974 (use 'hg help -e shelve' to show help for the shelve extension)
Laurent Charignon
shelve: add interactive mode command line option
r24477
options ([+] can be repeated):
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -A --addremove mark new/missing files as added/removed before
Laurent Charignon
shelve: add interactive mode command line option
r24477 shelving
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -u --unknown store unknown files in the shelve
--cleanup delete all shelved changes
Laurent Charignon
shelve: add interactive mode command line option
r24477 --date DATE shelve with the specified commit date
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -d --delete delete the named shelved change(s)
-e --edit invoke editor on commit messages
-l --list list current shelves
Laurent Charignon
shelve: add interactive mode command line option
r24477 -m --message TEXT use text as shelve message
-n --name NAME use the given name for the shelved commit
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -p --patch show patch
-i --interactive interactive mode, only works while creating a shelve
--stat output diffstat-style summary of changes
Laurent Charignon
shelve: add interactive mode command line option
r24477 -I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 --mq operate on patch repository
Laurent Charignon
shelve: add interactive mode command line option
r24477
(some details hidden, use --verbose to show complete help)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 shelving in an empty repo should be possible
FUJIWARA Katsunori
shelve: accept '--edit' like other commands creating new changeset...
r21852 (this tests also that editor is not invoked, if '--edit' is not
specified)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
FUJIWARA Katsunori
shelve: accept '--edit' like other commands creating new changeset...
r21852 $ HGEDITOR=cat hg shelve
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 shelved as default
0 files updated, 0 files merged, 5 files removed, 0 files unresolved
$ hg unshelve
unshelving change 'default'
$ hg commit -q -m 'initial commit'
$ hg shelve
nothing changed
[1]
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712 make sure shelve files were backed up
$ ls .hg/shelve-backup
default.hg
default.patch
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 checks to make sure we dont create a directory or
hidden file while choosing a new shelve name
when we are given a name
$ hg shelve -n foo/bar
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 abort: shelved change names can not contain slashes
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 [255]
$ hg shelve -n .baz
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 abort: shelved change names can not start with '.'
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 [255]
$ hg shelve -n foo\\bar
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 abort: shelved change names can not contain slashes
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 [255]
when shelve has to choose itself
$ hg branch x/y -q
$ hg commit -q -m "Branch commit 0"
$ hg shelve
nothing changed
[1]
$ hg branch .x -q
$ hg commit -q -m "Branch commit 1"
$ hg shelve
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 nothing changed
[1]
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 $ hg branch x\\y -q
$ hg commit -q -m "Branch commit 2"
$ hg shelve
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 nothing changed
[1]
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670
cleaning the branches made for name checking tests
$ hg up default -q
$ hg strip 3 -q
$ hg strip 2 -q
$ hg strip 1 -q
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 create an mq patch - shelving should work fine with a patch applied
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
$ echo n > n
$ hg add n
$ hg commit n -m second
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 $ hg qnew second.patch
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
shelve a change that we will delete later
$ echo a >> a/a
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
set up some more complex changes to shelve
$ echo a >> a/a
$ hg mv b b.rename
moving b/b to b.rename/b (glob)
$ hg cp c c.copy
$ hg status -C
M a/a
A b.rename/b
b/b
A c.copy
c
R b/b
the common case - no options or filenames
$ hg shelve
shelved as default-01
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg status -C
ensure that our shelved changes exist
$ hg shelve -l
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default-01 (*)* changes to: [mq]: second.patch (glob)
default (*)* changes to: [mq]: second.patch (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
$ hg shelve -l -p default
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: [mq]: second.patch (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
diff --git a/a/a b/a/a
--- a/a/a
+++ b/a/a
@@ -1,1 +1,2 @@
a
+a
FUJIWARA Katsunori
shelve: add option combination tests for refactoring in succeeding patch
r21715 $ hg shelve --list --addremove
abort: options '--list' and '--addremove' may not be used together
[255]
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 delete our older shelved change
$ hg shelve -d default
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 $ hg qfinish -a -q
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712 ensure shelve backups aren't overwritten
$ ls .hg/shelve-backup/
default-1.hg
default-1.patch
default.hg
default.patch
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 local edits should not prevent a shelved change from applying
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ printf "z\na\n" > a/a
$ hg unshelve --keep
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 unshelving change 'default-01'
Mads Kiilerich
shelve: status messages from unshelve...
r20413 temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 4:32c69314e062 "changes to: [mq]: second.patch" (tip)
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 merging a/a
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ hg revert --all -q
$ rm a/a.orig b.rename/b c.copy
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
apply it and make sure our state is as expected
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774 (this also tests that same timestamp prevents backups from being
removed, even though there are more than 'maxbackups' backups)
Kostia Balytskyi
shelve: move patch extension to a string constant...
r30554 $ f -t .hg/shelve-backup/default.patch
.hg/shelve-backup/default.patch: file
$ touch -t 200001010000 .hg/shelve-backup/default.patch
$ f -t .hg/shelve-backup/default-1.patch
.hg/shelve-backup/default-1.patch: file
$ touch -t 200001010000 .hg/shelve-backup/default-1.patch
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve
unshelving change 'default-01'
$ hg status -C
M a/a
A b.rename/b
b/b
A c.copy
c
R b/b
$ hg shelve -l
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774 (both of default.hg and default-1.hg should be still kept, because it
is difficult to decide actual order of them from same timestamp)
$ ls .hg/shelve-backup/
default-01.hg
default-01.patch
default-1.hg
default-1.patch
default.hg
default.patch
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve
abort: no shelved changes to apply!
[255]
$ hg unshelve foo
abort: shelved change 'foo' not found
[255]
named shelves, specific filenames, and "commit messages" should all work
FUJIWARA Katsunori
shelve: accept '--edit' like other commands creating new changeset...
r21852 (this tests also that editor is invoked, if '--edit' is specified)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
$ hg status -C
M a/a
A b.rename/b
b/b
A c.copy
c
R b/b
FUJIWARA Katsunori
shelve: accept '--edit' like other commands creating new changeset...
r21852 $ HGEDITOR=cat hg shelve -q -n wibble -m wat -e a
wat
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: shelve@localhost
HG: branch 'default'
HG: changed a/a
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
expect "a" to no longer be present, but status otherwise unchanged
$ hg status -C
A b.rename/b
b/b
A c.copy
c
R b/b
$ hg shelve -l --stat
David Soria Parra
shelve: new output format for shelve listings...
r19855 wibble (*) wat (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 a/a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
and now "a/a" should reappear
Takumi IINO
shelve: make unshelve work even if it don't run in repository root...
r19943 $ cd a
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve -q wibble
Takumi IINO
shelve: make unshelve work even if it don't run in repository root...
r19943 $ cd ..
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg status -C
M a/a
A b.rename/b
b/b
A c.copy
c
R b/b
Colin Chan
shelve: only keep the latest N shelve backups...
r25713 ensure old shelve backups are being deleted automatically
$ ls .hg/shelve-backup/
default-01.hg
default-01.patch
wibble.hg
wibble.patch
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 cause unshelving to result in a merge with 'a' conflicting
$ hg shelve -q
$ echo c>>a/a
$ hg commit -m second
$ hg tip --template '{files}\n'
a/a
add an unrelated change that should be preserved
$ mkdir foo
$ echo foo > foo/foo
$ hg add foo/foo
force a conflicted merge to occur
$ hg unshelve
unshelving change 'default'
Mads Kiilerich
shelve: status messages from unshelve...
r20413 temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:32c69314e062 "changes to: [mq]: second.patch" (tip)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 merging a/a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
ensure that we have a merge with unresolved conflicts
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ hg heads -q --template '{rev}\n'
5
4
$ hg parents -q --template '{rev}\n'
4
5
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg status
M a/a
M b.rename/b
M c.copy
R b/b
? a/a.orig
$ hg diff
diff --git a/a/a b/a/a
--- a/a/a
+++ b/a/a
@@ -1,2 +1,6 @@
a
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 +<<<<<<< dest: * - shelve: pending changes temporary commit (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 c
+=======
+a
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 +>>>>>>> source: 32c69314e062 - shelve: changes to: [mq]: second.patch
Matt Mackall
rebase: move duplicatecopies next to merge...
r22905 diff --git a/b/b b/b.rename/b
rename from b/b
rename to b.rename/b
diff --git a/c b/c.copy
copy from c
copy to c.copy
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg resolve -l
U a/a
$ hg shelve
abort: unshelve already in progress
(use 'hg unshelve --continue' or 'hg unshelve --abort')
[255]
abort the unshelve and be happy
$ hg status
M a/a
M b.rename/b
M c.copy
R b/b
? a/a.orig
$ hg unshelve -a
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 rebase aborted
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 unshelve of 'default' aborted
$ hg heads -q
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 3:2e69b451d1ea
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg parents
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 changeset: 3:2e69b451d1ea
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: second
$ hg resolve -l
$ hg status
A foo/foo
? a/a.orig
try to continue with no unshelve underway
$ hg unshelve -c
timeless
shelve: suggest the correct tool to continue (not unshelve)...
r28124 abort: no unshelve in progress
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 [255]
$ hg status
A foo/foo
? a/a.orig
redo the unshelve to get a conflict
$ hg unshelve -q
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
attempt to continue
$ hg unshelve -c
abort: unresolved conflicts, can't continue
(see 'hg resolve', then 'hg unshelve --continue')
[255]
$ hg revert -r . a/a
$ hg resolve -m a/a
Pierre-Yves David
resolve: add parenthesis around "no more unresolved files" message...
r21947 (no more unresolved files)
timeless
shelve: hook afterresolvedstates
r27694 continue: hg unshelve --continue
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
FUJIWARA Katsunori
shelve: disallow commit while unshelve is in progress...
r19963 $ hg commit -m 'commit while unshelve in progress'
abort: unshelve already in progress
(use 'hg unshelve --continue' or 'hg unshelve --abort')
[255]
timeless
shelve: suggest the correct tool to continue (not unshelve)...
r28124 $ hg graft --continue
abort: no graft in progress
(continue: hg unshelve --continue)
[255]
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve -c
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:32c69314e062 "changes to: [mq]: second.patch" (tip)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 unshelve of 'default' complete
ensure the repo is as we hope
$ hg parents
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 changeset: 3:2e69b451d1ea
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: second
$ hg heads -q
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 3:2e69b451d1ea
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
$ hg status -C
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 A b.rename/b
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 b/b
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 A c.copy
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 c
A foo/foo
R b/b
? a/a.orig
there should be no shelves left
$ hg shelve -l
#if execbit
ensure that metadata-only changes are shelved
$ chmod +x a/a
$ hg shelve -q -n execbit a/a
$ hg status a/a
$ hg unshelve -q execbit
$ hg status a/a
M a/a
$ hg revert a/a
#endif
#if symlink
$ rm a/a
$ ln -s foo a/a
$ hg shelve -q -n symlink a/a
$ hg status a/a
liscju
shelve: add -n/--name option to unshelve (issue5475)...
r31021 $ hg unshelve -q -n symlink
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg status a/a
M a/a
$ hg revert a/a
#endif
set up another conflict between a commit and a shelved change
$ hg revert -q -C -a
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ rm a/a.orig b.rename/b c.copy
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ echo a >> a/a
$ hg shelve -q
$ echo x >> a/a
$ hg ci -m 'create conflict'
$ hg add foo/foo
if we resolve a conflict while unshelving, the unshelve should succeed
Siddharth Agarwal
unshelve: add support for custom merge tools...
r27021 $ hg unshelve --tool :merge-other --keep
unshelving change 'default'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 6:2f694dd83a13 "changes to: second" (tip)
Siddharth Agarwal
unshelve: add support for custom merge tools...
r27021 merging a/a
$ hg parents -q
4:33f7f61e6c5e
$ hg shelve -l
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: second (glob)
Siddharth Agarwal
unshelve: add support for custom merge tools...
r27021 $ hg status
M a/a
A foo/foo
$ cat a/a
a
c
a
$ cat > a/a << EOF
> a
> c
> x
> EOF
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ HGMERGE=true hg unshelve
unshelving change 'default'
Mads Kiilerich
shelve: status messages from unshelve...
r20413 temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 6:2f694dd83a13 "changes to: second" (tip)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 merging a/a
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 note: rebase of 6:2f694dd83a13 created no changes to commit
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg parents -q
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 4:33f7f61e6c5e
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg shelve -l
$ hg status
A foo/foo
$ cat a/a
a
c
x
test keep and cleanup
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg shelve --list
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: create conflict (glob)
Siddharth Agarwal
unshelve: add -k as short form of --keep...
r27019 $ hg unshelve -k
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 unshelving change 'default'
$ hg shelve --list
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: create conflict (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg shelve --cleanup
$ hg shelve --list
David Soria Parra
shelve: copy bookmarks and restore them after a commit...
r19874
FUJIWARA Katsunori
shelve: add option combination tests for refactoring in succeeding patch
r21715 $ hg shelve --cleanup --delete
abort: options '--cleanup' and '--delete' may not be used together
[255]
$ hg shelve --cleanup --patch
abort: options '--cleanup' and '--patch' may not be used together
[255]
$ hg shelve --cleanup --message MESSAGE
abort: options '--cleanup' and '--message' may not be used together
[255]
David Soria Parra
shelve: copy bookmarks and restore them after a commit...
r19874 test bookmarks
$ hg bookmark test
$ hg bookmark
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 * test 4:33f7f61e6c5e
David Soria Parra
shelve: copy bookmarks and restore them after a commit...
r19874 $ hg shelve
shelved as test
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg bookmark
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 * test 4:33f7f61e6c5e
David Soria Parra
shelve: copy bookmarks and restore them after a commit...
r19874 $ hg unshelve
unshelving change 'test'
$ hg bookmark
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 * test 4:33f7f61e6c5e
Sean Farley
shelve: only save mq state if enabled...
r19885
shelve should still work even if mq is disabled
$ hg --config extensions.mq=! shelve
shelved as test
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg --config extensions.mq=! shelve --list
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 test (*)* changes to: create conflict (glob)
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
* test 4:33f7f61e6c5e
Sean Farley
shelve: only save mq state if enabled...
r19885 $ hg --config extensions.mq=! unshelve
unshelving change 'test'
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
* test 4:33f7f61e6c5e
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887
Matt Mackall
tests: fixup issue markers to make check-commit happy
r22183 shelve should leave dirstate clean (issue4055)
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887
$ cd ..
$ hg init shelverebase
$ cd shelverebase
$ printf 'x\ny\n' > x
$ echo z > z
$ hg commit -Aqm xy
$ echo z >> x
$ hg commit -Aqm z
$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ printf 'a\nx\ny\nz\n' > x
$ hg commit -Aqm xyz
$ echo c >> z
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg rebase -d 1 --config extensions.rebase=
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:323bfa07f744 "xyz" (tip)
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 merging x
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-78114325-backup.hg (glob)
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 $ hg unshelve
unshelving change 'default'
Mads Kiilerich
shelve: status messages from unshelve...
r20413 rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 4:82a0d7d6ba61 "changes to: xyz" (tip)
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887 $ hg status
M z
$ cd ..
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961
Matt Mackall
tests: fixup issue markers to make check-commit happy
r22183 shelve should only unshelve pending changes (issue4068)
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961
$ hg init onlypendingchanges
$ cd onlypendingchanges
$ touch a
$ hg ci -Aqm a
$ touch b
$ hg ci -Aqm b
$ hg up -q 0
$ touch c
$ hg ci -Aqm c
$ touch d
$ hg add d
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg up -q 1
$ hg unshelve
unshelving change 'default'
Mads Kiilerich
shelve: status messages from unshelve...
r20413 rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 3:958bcbd1776e "changes to: c" (tip)
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ hg status
A d
unshelve should work on an ancestor of the original commit
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg unshelve
unshelving change 'default'
Mads Kiilerich
shelve: status messages from unshelve...
r20413 rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 3:013284d9655e "changes to: b" (tip)
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ hg status
A d
David Soria Parra
shelve: unshelve using an unfiltered repository...
r20064 test bug 4073 we need to enable obsolete markers for it
Durham Goode
obsolete: update tests to use obsolete options...
r22955 $ cat >> $HGRCPATH << EOF
> [experimental]
> evolution=createmarkers
David Soria Parra
shelve: unshelve using an unfiltered repository...
r20064 > EOF
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg debugobsolete `hg --debug id -i -r 1`
$ hg unshelve
unshelving change 'default'
Durham Goode
unshelve: add tests for unknown files...
r20150 unshelve should leave unknown files alone (issue4113)
$ echo e > e
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg status
? e
$ hg unshelve
unshelving change 'default'
$ hg status
A d
? e
$ cat e
e
unshelve should keep a copy of unknown files
$ hg add e
$ hg shelve
shelved as default
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo z > e
$ hg unshelve
unshelving change 'default'
$ cat e
e
$ cat e.orig
z
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 unshelve and conflicts with tracked and untracked files
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414
preparing:
$ rm *.orig
$ hg ci -qm 'commit stuff'
$ hg phase -p null:
no other changes - no merge:
$ echo f > f
$ hg add f
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 $ echo g > f
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ hg unshelve
unshelving change 'default'
$ hg st
A f
? f.orig
$ cat f
f
$ cat f.orig
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 g
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414
other uncommitted changes - merge:
$ hg st
A f
? f.orig
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Simon Heimberg
tests: rewrite path in test-shelve.t for not being mangled on msys...
r20423 $ hg log -G --template '{rev} {desc|firstline} {author}' -R bundle://.hg/shelved/default.hg -r 'bundle()'
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 o 4 changes to: commit stuff shelve@localhost
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 |
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ hg log -G --template '{rev} {desc|firstline} {author}'
@ 3 commit stuff test
|
| o 2 c test
|/
o 0 a test
$ mv f.orig f
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 $ echo 1 > a
Mads Kiilerich
shelve: introduce secret option for using fixed date for temporary commit...
r20960 $ hg unshelve --date '1073741824 0'
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 unshelving change 'default'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
Mads Kiilerich
shelve: introduce secret option for using fixed date for temporary commit...
r20960 $ hg log -G --template '{rev} {desc|firstline} {author} {date|isodate}'
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 @ 5 changes to: commit stuff shelve@localhost 1970-01-01 00:00 +0000
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 |
Mads Kiilerich
shelve: introduce secret option for using fixed date for temporary commit...
r20960 | @ 4 pending changes temporary commit shelve@localhost 2004-01-10 13:37 +0000
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 |/
Mads Kiilerich
shelve: introduce secret option for using fixed date for temporary commit...
r20960 o 3 commit stuff test 1970-01-01 00:00 +0000
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 |
Mads Kiilerich
shelve: introduce secret option for using fixed date for temporary commit...
r20960 | o 2 c test 1970-01-01 00:00 +0000
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 |/
Mads Kiilerich
shelve: introduce secret option for using fixed date for temporary commit...
r20960 o 0 a test 1970-01-01 00:00 +0000
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414
$ hg st
M f
? f.orig
$ cat f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< dest: 5f6b880e719b - shelve: pending changes temporary commit
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 g
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 =======
f
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 >>>>>>> source: 81152db69da7 - shelve: changes to: commit stuff
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ cat f.orig
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 g
Siddharth Agarwal
unshelve: add support for custom merge tools...
r27021 $ hg unshelve --abort -t false
tool option will be ignored
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 rebase aborted
unshelve of 'default' aborted
$ hg st
M a
? f.orig
$ cat f.orig
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 g
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ hg unshelve
unshelving change 'default'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ hg st
M a
A f
? f.orig
other committed changes - merge:
$ hg shelve f
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg ci a -m 'intermediate other change'
$ mv f.orig f
$ hg unshelve
unshelving change 'default'
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:81152db69da7 "changes to: commit stuff" (tip)
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 merging f
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ hg st
M f
? f.orig
$ cat f
Kostia Balytskyi
conflicts: make spacing consistent in conflict markers...
r30460 <<<<<<< dest: * - test: intermediate other change (glob)
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 g
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 =======
f
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 >>>>>>> source: 81152db69da7 - shelve: changes to: commit stuff
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ cat f.orig
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 g
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ hg unshelve --abort
rebase aborted
unshelve of 'default' aborted
Mads Kiilerich
tests: make unshelve tests more tricky - don't depend on size change...
r20961 $ hg st
? f.orig
$ cat f.orig
g
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 $ hg shelve --delete default
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 Recreate some conflict again
$ cd ../repo
$ hg up -C -r 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark test)
$ echo y >> a/a
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg up test
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark test)
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
* test 4:33f7f61e6c5e
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 $ hg unshelve
unshelving change 'default'
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:e42a7da90865 "changes to: second" (tip)
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 merging a/a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
test 4:33f7f61e6c5e
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842
Test that resolving all conflicts in one direction (so that the rebase
is a no-op), works (issue4398)
$ hg revert -a -r .
reverting a/a (glob)
$ hg resolve -m a/a
(no more unresolved files)
timeless
shelve: hook afterresolvedstates
r27694 continue: hg unshelve --continue
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 $ hg unshelve -c
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 5:e42a7da90865 "changes to: second" (tip)
note: rebase of 5:e42a7da90865 created no changes to commit
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 unshelve of 'default' complete
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
* test 4:33f7f61e6c5e
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 $ hg diff
$ hg status
? a/a.orig
? foo/foo
$ hg summary
parent: 4:33f7f61e6c5e tip
create conflict
branch: default
bookmarks: *test
commit: 2 unknown (clean)
update: (current)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 5 draft
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842
FUJIWARA Katsunori
shelve: add option combination tests for refactoring in succeeding patch
r21715 $ hg shelve --delete --stat
abort: options '--delete' and '--stat' may not be used together
[255]
$ hg shelve --delete --name NAME
abort: options '--delete' and '--name' may not be used together
[255]
Laurent Charignon
shelve: add interactive mode...
r24478 Test interactive shelve
$ cat <<EOF >> $HGRCPATH
> [ui]
> interactive = true
> EOF
$ echo 'a' >> a/b
$ cat a/a >> a/b
$ echo 'x' >> a/b
$ mv a/b a/a
$ echo 'a' >> foo/foo
$ hg st
M a/a
? a/a.orig
? foo/foo
$ cat a/a
a
a
c
x
x
$ cat foo/foo
foo
a
FUJIWARA Katsunori
shelve: omit incorrect 'commit' suggestion at 'hg shelve -i'...
r25799 $ hg shelve --interactive --config ui.interactive=false
abort: running non-interactively
[255]
Laurent Charignon
shelve: add interactive mode...
r24478 $ hg shelve --interactive << EOF
> y
> y
> n
> EOF
diff --git a/a/a b/a/a
2 hunks, 2 lines changed
examine changes to 'a/a'? [Ynesfdaq?] y
@@ -1,3 +1,4 @@
+a
a
c
x
record change 1/2 to 'a/a'? [Ynesfdaq?] y
@@ -1,3 +2,4 @@
a
c
x
+x
record change 2/2 to 'a/a'? [Ynesfdaq?] n
shelved as test
merging a/a
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ cat a/a
a
c
x
x
$ cat foo/foo
foo
a
$ hg st
M a/a
? foo/foo
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
* test 4:33f7f61e6c5e
Laurent Charignon
shelve: add interactive mode...
r24478 $ hg unshelve
unshelving change 'test'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 6:96a1354f65f6 "changes to: create conflict" (tip)
Laurent Charignon
shelve: add interactive mode...
r24478 merging a/a
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
* test 4:33f7f61e6c5e
Laurent Charignon
shelve: add interactive mode...
r24478 $ cat a/a
a
a
c
x
x
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 shelve --patch and shelve --stat should work with valid shelfnames
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
$ hg up --clean .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 (leaving bookmark test)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 $ hg shelve --list
$ echo 'patch a' > shelf-patch-a
$ hg add shelf-patch-a
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo 'patch b' > shelf-patch-b
$ hg add shelf-patch-b
$ hg shelve
shelved as default-01
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg shelve --patch default default-01
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 default-01 (*)* changes to: create conflict (glob)
diff --git a/shelf-patch-b b/shelf-patch-b
new file mode 100644
--- /dev/null
+++ b/shelf-patch-b
@@ -0,0 +1,1 @@
+patch b
default (*)* changes to: create conflict (glob)
diff --git a/shelf-patch-a b/shelf-patch-a
new file mode 100644
--- /dev/null
+++ b/shelf-patch-a
@@ -0,0 +1,1 @@
+patch a
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 $ hg shelve --stat default default-01
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 default-01 (*)* changes to: create conflict (glob)
shelf-patch-b | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
default (*)* changes to: create conflict (glob)
shelf-patch-a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 $ hg shelve --patch default
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: create conflict (glob)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
diff --git a/shelf-patch-a b/shelf-patch-a
new file mode 100644
--- /dev/null
+++ b/shelf-patch-a
@@ -0,0 +1,1 @@
+patch a
$ hg shelve --stat default
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: create conflict (glob)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 shelf-patch-a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
$ hg shelve --patch nonexistentshelf
abort: cannot find shelf nonexistentshelf
[255]
$ hg shelve --stat nonexistentshelf
abort: cannot find shelf nonexistentshelf
[255]
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 $ hg shelve --patch default nonexistentshelf
abort: cannot find shelf nonexistentshelf
[255]
$ hg shelve --patch
abort: --patch expects at least one shelf
[255]
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 $ cd ..
Shelve from general delta repo uses bundle2 on disk
--------------------------------------------------
no general delta
Pierre-Yves David
test: enforce generaldelta format with the right option...
r26914 $ hg clone --pull repo bundle1 --config format.usegeneraldelta=0
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 requesting all changes
adding changesets
adding manifests
adding file changes
added 5 changesets with 8 changes to 6 files
updating to branch default
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd bundle1
$ echo babar > jungle
$ hg add jungle
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg debugbundle .hg/shelved/*.hg
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 45993d65fe9dc3c6d8764b9c3b07fa831ee7d92d
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 $ cd ..
with general delta
Pierre-Yves David
test: enforce generaldelta format with the right option...
r26914 $ hg clone --pull repo bundle2 --config format.usegeneraldelta=1
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 requesting all changes
adding changesets
adding manifests
adding file changes
added 5 changesets with 8 changes to 6 files
updating to branch default
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd bundle2
$ echo babar > jungle
$ hg add jungle
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg debugbundle .hg/shelved/*.hg
Gregory Szorc
util: implement a deterministic __repr__ on sortdict...
r29592 Stream params: sortdict([('Compression', 'BZ')])
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 45993d65fe9dc3c6d8764b9c3b07fa831ee7d92d
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 $ cd ..
Christian Delahousse
shelve: delete shelve statefile on any exception during abort...
r26681
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 Test visibility of in-memory changes inside transaction to external hook
------------------------------------------------------------------------
$ cd repo
$ echo xxxx >> x
$ hg commit -m "#5: changes to invoke rebase"
$ cat > $TESTTMP/checkvisibility.sh <<EOF
> echo "==== \$1:"
> hg parents --template "VISIBLE {rev}:{node|short}\n"
> # test that pending changes are hidden
> unset HG_PENDING
> hg parents --template "ACTUAL {rev}:{node|short}\n"
> echo "===="
> EOF
$ cat >> .hg/hgrc <<EOF
> [defaults]
> # to fix hash id of temporary revisions
> unshelve = --date '0 0'
> EOF
"hg unshelve" at REV5 implies steps below:
(1) commit changes in the working directory (REV6)
(2) unbundle shelved revision (REV7)
(3) rebase: merge REV7 into REV6 (REV6 => REV6, REV7)
(4) rebase: commit merged revision (REV8)
(5) rebase: update to REV6 (REV8 => REV6)
(6) update to REV5 (REV6 => REV5)
(7) abort transaction
== test visibility to external preupdate hook
$ cat >> .hg/hgrc <<EOF
> [hooks]
> preupdate.visibility = sh $TESTTMP/checkvisibility.sh preupdate
> EOF
$ echo nnnn >> n
$ sh $TESTTMP/checkvisibility.sh before-unshelving
==== before-unshelving:
VISIBLE 5:703117a2acfb
ACTUAL 5:703117a2acfb
====
$ hg unshelve --keep default
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 7:206bf5d4f922 "changes to: create conflict" (tip)
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ==== preupdate:
VISIBLE 6:66b86db80ee4
ACTUAL 5:703117a2acfb
====
==== preupdate:
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 VISIBLE 8:a0e04704317e
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ACTUAL 5:703117a2acfb
====
==== preupdate:
VISIBLE 6:66b86db80ee4
ACTUAL 5:703117a2acfb
====
$ cat >> .hg/hgrc <<EOF
> [hooks]
> preupdate.visibility =
> EOF
$ sh $TESTTMP/checkvisibility.sh after-unshelving
==== after-unshelving:
VISIBLE 5:703117a2acfb
ACTUAL 5:703117a2acfb
====
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 == test visibility to external update hook
$ hg update -q -C 5
$ cat >> .hg/hgrc <<EOF
> [hooks]
> update.visibility = sh $TESTTMP/checkvisibility.sh update
> EOF
$ echo nnnn >> n
$ sh $TESTTMP/checkvisibility.sh before-unshelving
==== before-unshelving:
VISIBLE 5:703117a2acfb
ACTUAL 5:703117a2acfb
====
$ hg unshelve --keep default
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 rebasing 7:206bf5d4f922 "changes to: create conflict" (tip)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ==== update:
VISIBLE 6:66b86db80ee4
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 VISIBLE 7:206bf5d4f922
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ACTUAL 5:703117a2acfb
====
==== update:
VISIBLE 6:66b86db80ee4
ACTUAL 5:703117a2acfb
====
==== update:
VISIBLE 5:703117a2acfb
ACTUAL 5:703117a2acfb
====
$ cat >> .hg/hgrc <<EOF
> [hooks]
> update.visibility =
> EOF
$ sh $TESTTMP/checkvisibility.sh after-unshelving
==== after-unshelving:
VISIBLE 5:703117a2acfb
ACTUAL 5:703117a2acfb
====
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 $ cd ..
Christian Delahousse
shelve: choose where .orig file locations are kept...
r26942 test .orig files go where the user wants them to
Christian Delahousse
shelve: delete shelve statefile on any exception during abort...
r26681 ---------------------------------------------------------------
$ hg init salvage
$ cd salvage
$ echo 'content' > root
$ hg commit -A -m 'root' -q
$ echo '' > root
$ hg shelve -q
$ echo 'contADDent' > root
Christian Delahousse
shelve: choose where .orig file locations are kept...
r26942 $ hg unshelve -q --config 'ui.origbackuppath=.hg/origbackups'
Christian Delahousse
shelve: delete shelve statefile on any exception during abort...
r26681 warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
Christian Delahousse
shelve: choose where .orig file locations are kept...
r26942 $ ls .hg/origbackups
root.orig
$ rm -rf .hg/origbackups
test Abort unshelve always gets user out of the unshelved state
---------------------------------------------------------------
Christian Delahousse
shelve: delete shelve statefile on any exception during abort...
r26681 Wreak havoc on the unshelve process
$ rm .hg/unshelverebasestate
$ hg unshelve --abort
unshelve of 'default' aborted
Matt Harbison
tests: tolerate differences between Linux and Windows error strings...
r26952 abort: (No such file or directory|The system cannot find the file specified) (re)
Christian Delahousse
shelve: delete shelve statefile on any exception during abort...
r26681 [255]
Can the user leave the current state?
$ hg up -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Try again but with a corrupted shelve state file
$ hg strip -r 2 -r 1 -q
$ hg up -r 0 -q
$ echo '' > root
$ hg shelve -q
$ echo 'contADDent' > root
$ hg unshelve -q
warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ sed 's/ae8c668541e8/123456789012/' .hg/shelvedstate > ../corrupt-shelvedstate
$ mv ../corrupt-shelvedstate .hg/histedit-state
timeless
test-shelve: do not use non-portable pipe-and
r26776 $ hg unshelve --abort 2>&1 | grep 'rebase aborted'
Christian Delahousse
shelve: delete shelve statefile on any exception during abort...
r26681 rebase aborted
$ hg up -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933
$ cd ..
Keep active bookmark while (un)shelving even on shared repo (issue4940)
-----------------------------------------------------------------------
$ cat <<EOF >> $HGRCPATH
> [extensions]
> share =
> EOF
$ hg bookmarks -R repo
test 4:33f7f61e6c5e
$ hg share -B repo share
updating working directory
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd share
$ hg bookmarks
test 4:33f7f61e6c5e
$ hg bookmarks foo
$ hg bookmarks
* foo 5:703117a2acfb
test 4:33f7f61e6c5e
$ echo x >> x
$ hg shelve
shelved as foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg bookmarks
* foo 5:703117a2acfb
test 4:33f7f61e6c5e
$ hg unshelve
unshelving change 'foo'
$ hg bookmarks
* foo 5:703117a2acfb
test 4:33f7f61e6c5e
$ cd ..
Simon Farnsworth
shelve: permit shelves to contain unknown files...
r27908
Shelve and unshelve unknown files. For the purposes of unshelve, a shelved
unknown file is the same as a shelved added file, except that it will be in
unknown state after unshelve if and only if it was either absent or unknown
before the unshelve operation.
$ hg init unknowns
$ cd unknowns
The simplest case is if I simply have an unknown file that I shelve and unshelve
$ echo unknown > unknown
$ hg status
? unknown
$ hg shelve --unknown
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg status
$ hg unshelve
unshelving change 'default'
$ hg status
? unknown
$ rm unknown
If I shelve, add the file, and unshelve, does it stay added?
$ echo unknown > unknown
$ hg shelve -u
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg status
$ touch unknown
$ hg add unknown
$ hg status
A unknown
$ hg unshelve
unshelving change 'default'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
rebasing 1:098df96e7410 "(changes in empty repository)" (tip)
merging unknown
$ hg status
A unknown
$ hg forget unknown
$ rm unknown
And if I shelve, commit, then unshelve, does it become modified?
$ echo unknown > unknown
$ hg shelve -u
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg status
$ touch unknown
$ hg add unknown
$ hg commit -qm "Add unknown"
$ hg status
$ hg unshelve
unshelving change 'default'
rebasing shelved changes
rebasing 1:098df96e7410 "(changes in empty repository)" (tip)
merging unknown
$ hg status
M unknown
$ hg remove --force unknown
$ hg commit -qm "Remove unknown"
$ cd ..
liscju
shelve: preserve newly created branch on non-bare shelve in wctx (BC)...
r28571
We expects that non-bare shelve keeps newly created branch in
working directory.
$ hg init shelve-preserve-new-branch
$ cd shelve-preserve-new-branch
$ echo "a" >> a
$ hg add a
$ echo "b" >> b
$ hg add b
$ hg commit -m "ab"
$ echo "aa" >> a
$ echo "bb" >> b
$ hg branch new-branch
marked working directory as branch new-branch
(branches are permanent and global, did you want a bookmark?)
$ hg status
M a
M b
$ hg branch
new-branch
$ hg shelve a
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch
new-branch
$ hg status
M b
$ touch "c" >> c
$ hg add c
$ hg status
M b
A c
$ hg shelve --exclude c
shelved as default-01
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch
new-branch
$ hg status
A c
$ hg shelve --include c
shelved as default-02
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg branch
new-branch
$ hg status
$ echo "d" >> d
$ hg add d
$ hg status
A d
We expect that bare-shelve will not keep branch in current working directory.
$ hg shelve
shelved as default-03
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg branch
default
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 $ cd ..
liscju
shelve: preserve newly created branch on non-bare shelve in wctx (BC)...
r28571
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573 When i shelve commit on newly created branch i expect
that after unshelve newly created branch will be preserved.
$ hg init shelve_on_new_branch_simple
$ cd shelve_on_new_branch_simple
$ echo "aaa" >> a
$ hg commit -A -m "a"
adding a
$ hg branch
default
$ hg branch test
marked working directory as branch test
(branches are permanent and global, did you want a bookmark?)
$ echo "bbb" >> a
$ hg status
M a
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch
default
$ echo "bbb" >> b
$ hg status
? b
$ hg unshelve
unshelving change 'default'
marked working directory as branch test
$ hg status
M a
? b
$ hg branch
test
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 $ cd ..
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573
When i shelve commit on newly created branch, make
some changes, unshelve it and running into merge
conflicts i expect that after fixing them and
running unshelve --continue newly created branch
will be preserved.
$ hg init shelve_on_new_branch_conflict
$ cd shelve_on_new_branch_conflict
$ echo "aaa" >> a
$ hg commit -A -m "a"
adding a
$ hg branch
default
$ hg branch test
marked working directory as branch test
(branches are permanent and global, did you want a bookmark?)
$ echo "bbb" >> a
$ hg status
M a
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch
default
$ echo "ccc" >> a
$ hg status
M a
$ hg unshelve
unshelving change 'default'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
rebasing 2:425c97ef07f3 "changes to: a" (tip)
merging a
warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ echo "aaabbbccc" > a
$ rm a.orig
$ hg resolve --mark a
(no more unresolved files)
continue: hg unshelve --continue
$ hg unshelve --continue
rebasing 2:425c97ef07f3 "changes to: a" (tip)
marked working directory as branch test
unshelve of 'default' complete
$ cat a
aaabbbccc
$ hg status
M a
$ hg branch
test
$ hg commit -m "test-commit"
When i shelve on test branch, update to default branch
and unshelve i expect that it will not preserve previous
test branch.
$ echo "xxx" > b
$ hg add b
$ hg shelve
shelved as test
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg update -r default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg unshelve
unshelving change 'test'
rebasing shelved changes
rebasing 2:357525f34729 "changes to: test-commit" (tip)
$ hg status
A b
$ hg branch
default
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 $ cd ..
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573
When i unshelve resulting in merge conflicts and makes saved
file shelvedstate looks like in previous versions in
mercurial(without restore branch information in 7th line) i
Mads Kiilerich
spelling: fixes of non-dictionary words
r30332 expect that after resolving conflicts and successfully
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573 running 'shelve --continue' the branch information won't be
restored and branch will be unchanged.
Matt Harbison
test-shelve: shorten a long path so it works on Windows
r28941 shelve on new branch, conflict with previous shelvedstate
$ hg init conflict
$ cd conflict
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573 $ echo "aaa" >> a
$ hg commit -A -m "a"
adding a
$ hg branch
default
$ hg branch test
marked working directory as branch test
(branches are permanent and global, did you want a bookmark?)
$ echo "bbb" >> a
$ hg status
M a
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch
default
$ echo "ccc" >> a
$ hg status
M a
$ hg unshelve
unshelving change 'default'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
rebasing 2:425c97ef07f3 "changes to: a" (tip)
merging a
warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
Removing restore branch information from shelvedstate file(making it looks like
in previous versions) and running unshelve --continue
$ head -n 6 < .hg/shelvedstate > .hg/shelvedstate_oldformat
$ rm .hg/shelvedstate
$ mv .hg/shelvedstate_oldformat .hg/shelvedstate
$ echo "aaabbbccc" > a
$ rm a.orig
$ hg resolve --mark a
(no more unresolved files)
continue: hg unshelve --continue
$ hg unshelve --continue
rebasing 2:425c97ef07f3 "changes to: a" (tip)
unshelve of 'default' complete
$ cat a
aaabbbccc
$ hg status
M a
$ hg branch
default
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 $ cd ..
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573
On non bare shelve the branch information shouldn't be restored
$ hg init bare_shelve_on_new_branch
$ cd bare_shelve_on_new_branch
$ echo "aaa" >> a
$ hg commit -A -m "a"
adding a
$ hg branch
default
$ hg branch test
marked working directory as branch test
(branches are permanent and global, did you want a bookmark?)
$ echo "bbb" >> a
$ hg status
M a
$ hg shelve a
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch
test
$ hg branch default
marked working directory as branch default
(branches are permanent and global, did you want a bookmark?)
$ echo "bbb" >> b
$ hg status
? b
$ hg unshelve
unshelving change 'default'
$ hg status
M a
? b
$ hg branch
default
Kostia Balytskyi
shelve: make unshelve be able to abort in any case
r29536 $ cd ..
Mads Kiilerich
spelling: fixes of non-dictionary words
r30332 Prepare unshelve with a corrupted shelvedstate
Kostia Balytskyi
shelve: make unshelve be able to abort in any case
r29536 $ hg init r1 && cd r1
$ echo text1 > file && hg add file
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo text2 > file && hg ci -Am text1
adding file
$ hg unshelve
unshelving change 'default'
rebasing shelved changes
rebasing 1:396ea74229f9 "(changes in empty repository)" (tip)
merging file
warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ echo somethingsomething > .hg/shelvedstate
Unshelve --continue fails with appropriate message if shelvedstate is corrupted
$ hg unshelve --continue
abort: corrupted shelved state file
(please run hg unshelve --abort to abort unshelve operation)
[255]
Unshelve --abort works with a corrupted shelvedstate
$ hg unshelve --abort
could not read shelved state file, your working copy may be in an unexpected state
please update to some commit
Unshelve --abort fails with appropriate message if there's no unshelve in
progress
$ hg unshelve --abort
abort: no unshelve in progress
[255]
$ cd ..
Kostia Balytskyi
shelve: make --keep option survive user intervention (issue5431)...
r30522
Unshelve respects --keep even if user intervention is needed
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 $ hg init unshelvekeep && cd unshelvekeep
Kostia Balytskyi
shelve: make --keep option survive user intervention (issue5431)...
r30522 $ echo 1 > file && hg ci -Am 1
adding file
$ echo 2 >> file
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo 3 >> file && hg ci -Am 13
$ hg shelve --list
Martin von Zweigbergk
tests: make test-shelve.t timing-independent...
r31228 default (*s ago) changes to: 1 (glob)
Kostia Balytskyi
shelve: make --keep option survive user intervention (issue5431)...
r30522 $ hg unshelve --keep
unshelving change 'default'
rebasing shelved changes
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 rebasing 2:3fbe6fbb0bef "changes to: 1" (tip)
Kostia Balytskyi
shelve: make --keep option survive user intervention (issue5431)...
r30522 merging file
warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ hg resolve --mark file
(no more unresolved files)
continue: hg unshelve --continue
$ hg unshelve --continue
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 rebasing 2:3fbe6fbb0bef "changes to: 1" (tip)
Kostia Balytskyi
shelve: make --keep option survive user intervention (issue5431)...
r30522 unshelve of 'default' complete
$ hg shelve --list
Kostia Balytskyi
shelve: fix use of unexpected working dirs in test-shelve.t...
r30549 default (*s ago) changes to: 1 (glob)
$ cd ..
Kostia Balytskyi
shelve: make unshelve not crash when there are missing files (issue4176)...
r30846
Unshelving when there are deleted files does not crash (issue4176)
$ hg init unshelve-deleted-file && cd unshelve-deleted-file
$ echo a > a && echo b > b && hg ci -Am ab
adding a
adding b
$ echo aa > a && hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm b
$ hg st
! b
$ hg unshelve
unshelving change 'default'
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm a && echo b > b
$ hg st
! a
$ hg unshelve
unshelving change 'default'
abort: shelved change touches missing files
(run hg status to see which files are missing)
[255]
$ hg st
! a