##// END OF EJS Templates
test-shelve: shorten a long path so it works on Windows
test-shelve: shorten a long path so it works on Windows

File last commit:

r28941:8353d154 default
r28941:8353d154 default
Show More
test-shelve.t
1587 lines | 38.2 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.
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573 In bare shelve(when no files are specified, without interactive, include
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".
(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
timeless
shelve: lowercase flag description...
r27921 -u --unknown store unknown files in the shelve
Laurent Charignon
shelve: add interactive mode command line option
r24477 --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
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)
$ 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
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
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
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
$ 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
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
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
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
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
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
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
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]
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
Stream params: {'Compression': 'BZ'}
changegroup -- "{'version': '02'}"
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
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
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
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
expect that after resolving conflicts and succesfully
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
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