##// END OF EJS Templates
tests: tolerate differences between Linux and Windows error strings...
tests: tolerate differences between Linux and Windows error strings These are related to differences in how missing files and network connection failures are displayed. I opted to combine the strings in one line instead of using '#if windows' blocks around entire commands in order to avoid future changes being accidentally missed in the Windows sections. Globbing away the entire output seemed wrong, as it could mask other failures. The raw messages involved are: Linux Windows "* not known" <-> "getaddrinfo failed" "Connection refused" <-> "No connection could be made because the target machine actively refused it" "No such file or directory" <-> "The system cannot find the file specified" Issue 4941 indicates that NetBSD has yet another string for "* not known". Also, the histedit test shows that the missing file is printed first on Windows, last on Linux. That is controlled in windows.py:posixfile if we care to change it.

File last commit:

r26952:4e566f51 default
r26952:4e566f51 default
Show More
test-shelve.t
1221 lines | 29.0 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.
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".
(use "hg help -e shelve" to show help for the shelve extension)
options ([+] can be repeated):
-A --addremove mark new/missing files as added/removed before
shelving
--cleanup delete all shelved changes
--date DATE shelve with the specified commit date
-d --delete delete the named shelved change(s)
-e --edit invoke editor on commit messages
-l --list list current shelves
-m --message TEXT use text as shelve message
-n --name NAME use the given name for the shelved commit
-p --patch show patch
Laurent Charignon
selve: make 'shelve --interactive' not experimental...
r25260 -i --interactive interactive mode, only works while creating a shelve
Laurent Charignon
shelve: add interactive mode command line option
r24477 --stat output diffstat-style summary of changes
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
--mq operate on patch repository
(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
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
prevent some foot-shooting
$ hg shelve -n foo/bar
abort: shelved change names may not contain slashes
[255]
$ hg shelve -n .baz
abort: shelved change names may not start with '.'
[255]
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
Tristan Seligmann
test-shelve: be more lenient about whitespace (issue4124)...
r24233 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
Tristan Seligmann
test-shelve: be more lenient about whitespace (issue4124)...
r24233 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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 4:4702e8911fe0 "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)
$ f -t .hg/shelve-backup/default.hg
.hg/shelve-backup/default.hg: file
$ touch -t 200001010000 .hg/shelve-backup/default.hg
$ f -t .hg/shelve-backup/default-1.hg
.hg/shelve-backup/default-1.hg: file
$ touch -t 200001010000 .hg/shelve-backup/default-1.hg
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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:4702e8911fe0 "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
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 +<<<<<<< dest: * - shelve: pending changes temporary commit (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 c
+=======
+a
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 +>>>>>>> source: 4702e8911fe0 - 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
abort: no unshelve operation underway
[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)
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]
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve -c
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:4702e8911fe0 "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
$ hg unshelve -q symlink
$ 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
$ 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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 6:c5e6910e7601 "changes to 'second'" (tip)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 merging a/a
Mads Kiilerich
rebase: show warning when rebase creates no changes to commit...
r23518 note: rebase of 6:c5e6910e7601 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
Mads Kiilerich
shelve: add 'changes to' prefix to default shelve message...
r20411 default (*) changes to 'create conflict' (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve --keep
unshelving change 'default'
$ hg shelve --list
Mads Kiilerich
shelve: add 'changes to' prefix to default shelve message...
r20411 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
Mads Kiilerich
shelve: add 'changes to' prefix to default shelve message...
r20411 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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 4:b8fefe789ed0 "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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 3:0cae6656c016 "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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 3:be58f65f55fb "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()'
Mads Kiilerich
shelve: better (and slightly redundant) test coverage for unshelve conflicts
r20414 o 4 changes to 'commit stuff' shelve@localhost
|
$ 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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:23b29cada8ba "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}'
@ 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
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 <<<<<<< 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
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 >>>>>>> source: 23b29cada8ba - 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
$ 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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:23b29cada8ba "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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:23b29cada8ba "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
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 <<<<<<< 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
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 >>>>>>> source: 23b29cada8ba - 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
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:4b555fdb4e96 "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)
$ hg unshelve -c
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:4b555fdb4e96 "changes to 'second'" (tip)
Mads Kiilerich
rebase: show warning when rebase creates no changes to commit...
r23518 note: rebase of 5:4b555fdb4e96 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
rebasing 6:65b5d1c34c34 "changes to 'create conflict'" (tip)
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
shelve --patch and shelve --stat should work with a single valid shelfname
$ 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
abort: --patch expects a single shelf
[255]
$ hg shelve --stat default default-01
abort: --stat expects a single shelf
[255]
$ hg shelve --patch default
default (* ago) 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
$ hg shelve --stat default
default (* ago) changes to 'create conflict' (glob)
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]
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
7e30d8ac6f23cfc84330fd7e698730374615d21a
$ 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
Stream params: {'Compression': 'BZ'}
changegroup -- "{'version': '02'}"
7e30d8ac6f23cfc84330fd7e698730374615d21a
$ 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
rebasing 7:fcbb97608399 "changes to 'create conflict'" (tip)
==== preupdate:
VISIBLE 6:66b86db80ee4
ACTUAL 5:703117a2acfb
====
==== preupdate:
VISIBLE 8:cb2a4e59c2d5
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
rebasing 7:fcbb97608399 "changes to 'create conflict'" (tip)
==== update:
VISIBLE 6:66b86db80ee4
VISIBLE 7:fcbb97608399
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 ..