##// END OF EJS Templates
mq: use dirstateguard instead of dirstate.invalidate (qpush)...
mq: use dirstateguard instead of dirstate.invalidate (qpush) Before this patch, "mq.queue.apply()" uses "dirstate.invalidate()" as a kind of "restore .hg/dirstate to the original status" during afailure. But it just discards changes in memory, and doesn't actually restore ".hg/dirstate". Then, it can't work as expected, if "dirstate.write()" is executed while processing. This patch uses "dirstateguard" instead of "dirstate.invalidate()" to restore ".hg/dirstate" at failure even if "dirstate.write()" is executed before failure. This is a part of preparations to fix the issue that the recent (in memory) dirstate isn't visible to external processes (e.g. "precommit" hook).

File last commit:

r24872:3510ec97 stable
r24996:58308dde default
Show More
test-shelve.t
865 lines | 19.5 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'
> 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
--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]
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
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
$ 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
$ 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
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
warning: conflicts during merge.
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
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
warning: conflicts during merge.
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
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)
Sean Farley
shelve: only save mq state if enabled...
r19885 $ hg --config extensions.mq=! unshelve
unshelving change 'test'
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
warning: conflicts during merge.
merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
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
warning: conflicts during merge.
merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
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)
$ 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
warning: conflicts during merge.
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
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
$ 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)
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
$ 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
$ 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
$ cat a/a
a
a
c
x
x
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ cd ..