##// END OF EJS Templates
unshelve: handle stripping changesets on interactive mode...
unshelve: handle stripping changesets on interactive mode On interactive mode, changesets on `nodestoremove` should be stripped regardless of the shelve is partial or not. This patch modifies `unshelvecontinue()` to do that. Differential Revision: https://phab.mercurial-scm.org/D6686

File last commit:

r42930:4814d993 default
r42930:4814d993 default
Show More
test-shelve.t
1427 lines | 32.3 KiB | text/troff | Tads3Lexer
Boris Feld
shelve: use the internal phase when possible...
r39555 #testcases stripbased phasebased
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [extensions]
> mq =
> [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
Boris Feld
shelve: use the internal phase when possible...
r39555 #if phasebased
$ cat <<EOF >> $HGRCPATH
> [format]
> internal-phase = yes
> EOF
#endif
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg init repo
$ cd repo
$ mkdir a b
$ echo a > a/a
$ echo b > b/b
$ echo c > c
$ echo d > d
$ echo x > x
$ hg addremove -q
Laurent Charignon
shelve: add interactive mode command line option
r24477 shelve has a help message
$ hg shelve -h
hg shelve [OPTION]... [FILE]...
save and set aside changes from the working directory
Shelving takes files that "hg status" reports as not clean, saves the
modifications to a bundle (a shelved change), and reverts the files so
that their state in the working directory becomes clean.
To restore these changes to the working directory, using "hg unshelve";
this will work even if you switch to a different commit.
When no files are specified, "hg shelve" saves all not-clean files. If
specific files or directories are named, only changes to those files are
shelved.
Mads Kiilerich
shelve: add missing space in help text...
r30419 In bare shelve (when no files are specified, without interactive, include
liscju
shelve: adds restoring newly created branch (issue5048) (BC)...
r28573 and exclude option), shelving remembers information if the working
directory was on newly created branch, in other words working directory
was on different branch than its first parent. In this situation
unshelving restores branch information to the working directory.
Laurent Charignon
shelve: add interactive mode command line option
r24477 Each shelved change has a name that makes it easier to find later. The
name of a shelved change defaults to being based on the active bookmark,
or if there is no active bookmark, the current named branch. To specify a
different name, use "--name".
To see a list of existing shelved changes, use the "--list" option. For
each shelved change, this will print its name, age, and description; use "
--patch" or "--stat" for more details.
To delete specific shelved changes, use "--delete". To delete all shelved
changes, use "--cleanup".
options ([+] can be repeated):
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -A --addremove mark new/missing files as added/removed before
Laurent Charignon
shelve: add interactive mode command line option
r24477 shelving
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -u --unknown store unknown files in the shelve
--cleanup delete all shelved changes
Laurent Charignon
shelve: add interactive mode command line option
r24477 --date DATE shelve with the specified commit date
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -d --delete delete the named shelved change(s)
Martin von Zweigbergk
help: hide default value for default-off flags...
r41046 -e --edit invoke editor on commit messages
Jordi Gutiérrez Hermoso
shelve: new keep option...
r42178 -k --keep shelve, but keep changes in the working directory
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -l --list list current shelves
Laurent Charignon
shelve: add interactive mode command line option
r24477 -m --message TEXT use text as shelve message
-n --name NAME use the given name for the shelved commit
Danny Hooper
shelve: improve help text for --patch and --stat...
r38736 -p --patch output patches for changes (provide the names of the
shelved changes as positional arguments)
Navaneeth Suresh
shelve: modify help text on --interactive...
r42842 -i --interactive interactive mode
Danny Hooper
shelve: improve help text for --patch and --stat...
r38736 --stat output diffstat-style summary of changes (provide
the names of the shelved changes as positional
arguments)
Laurent Charignon
shelve: add interactive mode command line option
r24477 -I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 --mq operate on patch repository
Laurent Charignon
shelve: add interactive mode command line option
r24477
(some details hidden, use --verbose to show complete help)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 shelving in an empty repo should be possible
FUJIWARA Katsunori
shelve: accept '--edit' like other commands creating new changeset...
r21852 (this tests also that editor is not invoked, if '--edit' is not
specified)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
FUJIWARA Katsunori
shelve: accept '--edit' like other commands creating new changeset...
r21852 $ HGEDITOR=cat hg shelve
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 shelved as default
0 files updated, 0 files merged, 5 files removed, 0 files unresolved
$ hg unshelve
unshelving change 'default'
$ hg commit -q -m 'initial commit'
$ hg shelve
nothing changed
[1]
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712 make sure shelve files were backed up
$ ls .hg/shelve-backup
default.hg
default.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 default.shelve
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 checks to make sure we dont create a directory or
hidden file while choosing a new shelve name
when we are given a name
$ hg shelve -n foo/bar
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 abort: shelved change names can not contain slashes
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 [255]
$ hg shelve -n .baz
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 abort: shelved change names can not start with '.'
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 [255]
$ hg shelve -n foo\\bar
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 abort: shelved change names can not contain slashes
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 [255]
when shelve has to choose itself
$ hg branch x/y -q
$ hg commit -q -m "Branch commit 0"
$ hg shelve
nothing changed
[1]
$ hg branch .x -q
$ hg commit -q -m "Branch commit 1"
$ hg shelve
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 nothing changed
[1]
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670 $ hg branch x\\y -q
$ hg commit -q -m "Branch commit 2"
$ hg shelve
Pulkit Goyal
shelve: choose a legal shelve name when no name is passed (issue5112)...
r30671 nothing changed
[1]
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670
cleaning the branches made for name checking tests
$ hg up default -q
Boris Feld
shelve: use full hash in tests...
r38356 $ hg strip e9177275307e+6a6d231f43d+882bae7c62c2 -q
Pulkit Goyal
shelve: add tests to ensure illegal shelve names are avoided...
r30670
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
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 moving b/b to b.rename/b
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg cp c c.copy
$ hg status -C
M a/a
A b.rename/b
b/b
A c.copy
c
R b/b
the common case - no options or filenames
$ hg shelve
shelved as default-01
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg status -C
ensure that our shelved changes exist
$ hg shelve -l
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default-01 (*)* changes to: [mq]: second.patch (glob)
default (*)* changes to: [mq]: second.patch (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
$ hg shelve -l -p default
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: [mq]: second.patch (glob)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
diff --git a/a/a b/a/a
--- a/a/a
+++ b/a/a
@@ -1,1 +1,2 @@
a
+a
FUJIWARA Katsunori
shelve: add option combination tests for refactoring in succeeding patch
r21715 $ hg shelve --list --addremove
abort: options '--list' and '--addremove' may not be used together
[255]
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 delete our older shelved change
$ hg shelve -d default
David Soria Parra
shelve: allow shelving of a change with an mq patch applied...
r19856 $ hg qfinish -a -q
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712 ensure shelve backups aren't overwritten
$ ls .hg/shelve-backup/
default-1.hg
default-1.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 default-1.shelve
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712 default.hg
default.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 default.shelve
Colin Chan
shelve: always backup shelves instead of deleting them...
r25712
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
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 merging a/a
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
Durham Goode
shelve: use rebase instead of merge (issue4068)...
r19961 $ hg revert --all -q
$ rm a/a.orig b.rename/b c.copy
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
apply it and make sure our state is as expected
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774 (this also tests that same timestamp prevents backups from being
removed, even though there are more than 'maxbackups' backups)
Kostia Balytskyi
shelve: move patch extension to a string constant...
r30554 $ f -t .hg/shelve-backup/default.patch
.hg/shelve-backup/default.patch: file
$ touch -t 200001010000 .hg/shelve-backup/default.patch
$ f -t .hg/shelve-backup/default-1.patch
.hg/shelve-backup/default-1.patch: file
$ touch -t 200001010000 .hg/shelve-backup/default-1.patch
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve
unshelving change 'default-01'
$ hg status -C
M a/a
A b.rename/b
b/b
A c.copy
c
R b/b
$ hg shelve -l
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774 (both of default.hg and default-1.hg should be still kept, because it
is difficult to decide actual order of them from same timestamp)
$ ls .hg/shelve-backup/
default-01.hg
default-01.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 default-01.shelve
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774 default-1.hg
default-1.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 default-1.shelve
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774 default.hg
default.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 default.shelve
FUJIWARA Katsunori
shelve: keep old backups if timestamp can't decide exact order of them...
r25774
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg unshelve
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
Boris Feld
shelve: store shelved node in a new data file...
r39408 default-01.shelve
Colin Chan
shelve: only keep the latest N shelve backups...
r25713 wibble.hg
wibble.patch
Boris Feld
shelve: store shelved node in a new data file...
r39408 wibble.shelve
Colin Chan
shelve: only keep the latest N shelve backups...
r25713
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
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]
Pulkit Goyal
morestatus: move fb extension to core by plugging to `hg status --verbose`...
r33766 $ hg status -v
M a/a
M b.rename/b
M c.copy
R b/b
? a/a.orig
# The repository is in an unfinished *unshelve* state.
# Unresolved merge conflicts:
#
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 # a/a
Pulkit Goyal
morestatus: move fb extension to core by plugging to `hg status --verbose`...
r33766 #
# To mark files as resolved: hg resolve --mark FILE
Pulkit Goyal
morestatus: remove some extra spaces...
r38360 # To continue: hg unshelve --continue
# To abort: hg unshelve --abort
Pulkit Goyal
morestatus: move fb extension to core by plugging to `hg status --verbose`...
r33766
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854
ensure that we have a merge with unresolved conflicts
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 #if phasebased
$ hg heads -q --template '{rev}\n'
8
5
$ hg parents -q --template '{rev}\n'
8
5
#endif
#if stripbased
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 #endif
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
Boris Feld
shelve: add an "internal" extra...
r39412 +<<<<<<< shelve: 2377350b6337 - shelve: pending changes temporary commit
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 c
+=======
+a
Boris Feld
shelve: add an "internal" extra...
r39412 +>>>>>>> working-copy: a68ec3400638 - 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
unshelve of 'default' aborted
$ hg heads -q
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 [37]:2e69b451d1ea (re)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg parents
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 changeset: [37]:2e69b451d1ea (re)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 tag: tip
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 parent: 3:509104101065 (?)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 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
unshelve of 'default' complete
ensure the repo is as we hope
$ hg parents
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 changeset: [37]:2e69b451d1ea (re)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 tag: tip
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 parent: 3:509104101065 (?)
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: second
$ hg heads -q
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 [37]:2e69b451d1ea (re)
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
Matt Harbison
tests: stabilize test-shelve.t#phasebased for #no-symlink and #no-execbit...
r39797 #else
Dummy shelve op, to keep rev numbers aligned
$ echo foo > a/a
$ hg shelve -q -n dummy a/a
$ hg unshelve -q dummy
$ hg revert a/a
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 #endif
#if symlink
$ rm a/a
$ ln -s foo a/a
$ hg shelve -q -n symlink a/a
$ hg status a/a
liscju
shelve: add -n/--name option to unshelve (issue5475)...
r31021 $ hg unshelve -q -n symlink
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg status a/a
M a/a
$ hg revert a/a
Matt Harbison
tests: stabilize test-shelve.t#phasebased for #no-symlink and #no-execbit...
r39797 #else
Dummy shelve op, to keep rev numbers aligned
$ echo bar > a/a
$ hg shelve -q -n dummy a/a
$ hg unshelve -q dummy
$ hg revert a/a
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 #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
merging a/a
$ hg parents -q
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 (4|13):33f7f61e6c5e (re)
Siddharth Agarwal
unshelve: add support for custom merge tools...
r27021 $ 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
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 merging a/a
Boris Feld
shelve: directly handle the initial parent alignment...
r38637 note: unshelved changes already existed in the working copy
David Soria Parra
shelve: add a shelve extension to save/restore working changes...
r19854 $ hg parents -q
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 (4|13):33f7f61e6c5e (re)
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
David Soria Parra
shelve: copy bookmarks and restore them after a commit...
r19874 $ hg unshelve
unshelving change 'test'
$ hg bookmark
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
Durham Goode
shelve: fix dirstate corruption during unshelve (issue4055)...
r19887
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 Recreate some conflict again
Boris Feld
shelve: use full hash in tests...
r38356 $ hg up -C -r 2e69b451d1ea
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 $ hg unshelve
unshelving change 'default'
rebasing shelved changes
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 test (4|13):33f7f61e6c5e (re)
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 .
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 reverting a/a
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 $ 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
Boris Feld
shelve: directly handle `--continue`...
r38481 note: unshelved changes already existed in the working copy
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 parent: (4|13):33f7f61e6c5e tip (re)
Jordi Gutiérrez Hermoso
shelve: don't delete "." when rebase is a no-op (issue4398)...
r22842 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
Kyle Lippincott
patch: use a short, fixed-size message for last line of prompt (issue6158)...
r42766 examine changes to 'a/a'?
(enter ? for help) [Ynesfdaq?] y
Laurent Charignon
shelve: add interactive mode...
r24478
@@ -1,3 +1,4 @@
+a
a
c
x
Kyle Lippincott
patch: use a short, fixed-size message for last line of prompt (issue6158)...
r42766 record change 1/2 to 'a/a'?
(enter ? for help) [Ynesfdaq?] y
Laurent Charignon
shelve: add interactive mode...
r24478
@@ -1,3 +2,4 @@
a
c
x
+x
Kyle Lippincott
patch: use a short, fixed-size message for last line of prompt (issue6158)...
r42766 record change 2/2 to 'a/a'?
(enter ? for help) [Ynesfdaq?] n
Laurent Charignon
shelve: add interactive mode...
r24478
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
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
Laurent Charignon
shelve: add interactive mode...
r24478 $ hg unshelve
unshelving change 'test'
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
merging a/a
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 $ hg bookmark
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* test (4|13):33f7f61e6c5e (re)
Laurent Charignon
shelve: add interactive mode...
r24478 $ cat a/a
a
a
c
x
x
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 shelve --patch and shelve --stat should work with valid shelfnames
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
$ hg up --clean .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
FUJIWARA Katsunori
bookmarks: use recordchange instead of writing if transaction is active...
r26520 (leaving bookmark test)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 $ hg shelve --list
$ echo 'patch a' > shelf-patch-a
$ hg add shelf-patch-a
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo 'patch b' > shelf-patch-b
$ hg add shelf-patch-b
$ hg shelve
shelved as default-01
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg shelve --patch default default-01
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 default-01 (*)* changes to: create conflict (glob)
diff --git a/shelf-patch-b b/shelf-patch-b
new file mode 100644
--- /dev/null
+++ b/shelf-patch-b
@@ -0,0 +1,1 @@
+patch b
default (*)* changes to: create conflict (glob)
diff --git a/shelf-patch-a b/shelf-patch-a
new file mode 100644
--- /dev/null
+++ b/shelf-patch-a
@@ -0,0 +1,1 @@
+patch a
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 $ hg shelve --stat default default-01
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 default-01 (*)* changes to: create conflict (glob)
shelf-patch-b | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
default (*)* changes to: create conflict (glob)
shelf-patch-a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 $ hg shelve --patch default
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: create conflict (glob)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104
diff --git a/shelf-patch-a b/shelf-patch-a
new file mode 100644
--- /dev/null
+++ b/shelf-patch-a
@@ -0,0 +1,1 @@
+patch a
$ hg shelve --stat default
Siddharth Agarwal
shelve: use colon instead of quotes in 'changes to' description...
r27092 default (*)* changes to: create conflict (glob)
Tony Tung
shelve: allow --patch and --stat without --list for a single shelf...
r25104 shelf-patch-a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
$ hg shelve --patch nonexistentshelf
abort: cannot find shelf nonexistentshelf
[255]
$ hg shelve --stat nonexistentshelf
abort: cannot find shelf nonexistentshelf
[255]
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 $ hg shelve --patch default nonexistentshelf
abort: cannot find shelf nonexistentshelf
[255]
Danny Hooper
shelve: pick the most recent shelve if none specified for --patch/--stat...
r38737
when the user asks for a patch, we assume they want the most recent shelve if
they don't provide a shelve name
Pulkit Goyal
shelve: allow multiple shelves with --patch and --stat...
r30823 $ hg shelve --patch
Danny Hooper
shelve: pick the most recent shelve if none specified for --patch/--stat...
r38737 default-01 (*)* changes to: create conflict (glob)
diff --git a/shelf-patch-b b/shelf-patch-b
new file mode 100644
--- /dev/null
+++ b/shelf-patch-b
@@ -0,0 +1,1 @@
+patch b
$ cd ..
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 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
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cc01e2b0c59f:33f7f61e6c5e
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 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
Boris Feld
shelve: add an "internal" extra...
r39412 330882a04d2ce8487636b1fb292e5beea77fa1e3
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
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cc01e2b0c59f:33f7f61e6c5e
Pierre-Yves David
shelve: bundle using bundle2 if repository is general delta (issue4862)...
r26507 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
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 Stream params: {Compression: BZ}
Boris Feld
debugbundle: also display if a part is mandatory or advisory...
r37919 changegroup -- {nbchanges: 1, version: 02} (mandatory: True)
Boris Feld
shelve: add an "internal" extra...
r39412 330882a04d2ce8487636b1fb292e5beea77fa1e3
Jordi Gutiérrez Hermoso
shelve: do not update when keeping changes, just move the dirstate...
r42180
Test shelve --keep
$ hg unshelve
unshelving change 'default'
Jordi Gutiérrez Hermoso
shelve: add --keep to list of allowables
r42187 $ hg shelve --keep --list
abort: options '--list' and '--keep' may not be used together
[255]
$ hg shelve --keep --patch
abort: options '--patch' and '--keep' may not be used together
[255]
$ hg shelve --keep --delete
abort: options '--delete' and '--keep' may not be used together
[255]
Jordi Gutiérrez Hermoso
shelve: do not update when keeping changes, just move the dirstate...
r42180 $ hg shelve --keep
shelved as default
$ hg diff
diff --git a/jungle b/jungle
new file mode 100644
--- /dev/null
+++ b/jungle
@@ -0,0 +1,1 @@
+babar
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:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (5|19):703117a2acfb (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ====
$ hg unshelve --keep default
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
==== preupdate:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (6|20):54c00d20fb3f (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ====
==== preupdate:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (8|21):8efe6f7537dc (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ====
==== preupdate:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (6|20):54c00d20fb3f (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ====
$ cat >> .hg/hgrc <<EOF
> [hooks]
> preupdate.visibility =
> EOF
$ sh $TESTTMP/checkvisibility.sh after-unshelving
==== after-unshelving:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (5|19):703117a2acfb (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 ====
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 == test visibility to external update hook
Boris Feld
shelve: use full hash in tests...
r38356 $ hg update -q -C 703117a2acfb
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752
$ cat >> .hg/hgrc <<EOF
> [hooks]
> update.visibility = sh $TESTTMP/checkvisibility.sh update
> EOF
$ echo nnnn >> n
$ sh $TESTTMP/checkvisibility.sh before-unshelving
==== before-unshelving:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (5|19):703117a2acfb (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ====
$ hg unshelve --keep default
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
==== update:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (6|20):54c00d20fb3f (re)
VISIBLE 1?7:492ed9d705e5 (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ====
==== update:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (6|20):54c00d20fb3f (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ====
==== update:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (5|19):703117a2acfb (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ====
$ cat >> .hg/hgrc <<EOF
> [hooks]
> update.visibility =
> EOF
$ sh $TESTTMP/checkvisibility.sh after-unshelving
==== after-unshelving:
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 VISIBLE (5|19):703117a2acfb (re)
ACTUAL (5|19):703117a2acfb (re)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 ====
FUJIWARA Katsunori
hook: centralize passing HG_PENDING to external hook process...
r26751 $ cd ..
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933 Keep active bookmark while (un)shelving even on shared repo (issue4940)
-----------------------------------------------------------------------
$ cat <<EOF >> $HGRCPATH
> [extensions]
> share =
> EOF
$ hg bookmarks -R repo
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 test (4|13):33f7f61e6c5e (re)
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933 $ hg share -B repo share
updating working directory
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd share
$ hg bookmarks
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 test (4|13):33f7f61e6c5e (re)
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933 $ hg bookmarks foo
$ hg bookmarks
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* foo (5|19):703117a2acfb (re)
test (4|13):33f7f61e6c5e (re)
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933 $ echo x >> x
$ hg shelve
shelved as foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg bookmarks
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* foo (5|19):703117a2acfb (re)
test (4|13):33f7f61e6c5e (re)
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933
$ hg unshelve
unshelving change 'foo'
$ hg bookmarks
Boris Feld
shelve: no longer strip internal commit when using internal phase...
r39780 \* foo (5|19):703117a2acfb (re)
test (4|13):33f7f61e6c5e (re)
FUJIWARA Katsunori
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)...
r26933
$ cd ..
Navaneeth Suresh
unshelve: disable unshelve during merge (issue5123)...
r42217
Abort unshelve while merging (issue5123)
----------------------------------------
$ hg init issue5123
$ cd issue5123
$ echo > a
$ hg ci -Am a
adding a
$ hg co null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo > b
$ hg ci -Am b
adding b
created new head
$ echo > c
$ hg add c
$ hg shelve
shelved as default
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg co 1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-- successful merge with two parents
$ hg log -G
@ changeset: 1:406bf70c274f
tag: tip
parent: -1:000000000000
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
@ changeset: 0:ada8c9eb8252
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
-- trying to pull in the shelve bits
-- unshelve should abort otherwise, it'll eat my second parent.
$ hg unshelve
Taapas Agrawal
statecheck: added support for STATES...
r42732 abort: outstanding uncommitted merge
(use 'hg commit' or 'hg merge --abort')
Navaneeth Suresh
unshelve: disable unshelve during merge (issue5123)...
r42217 [255]
$ cd ..
Navaneeth Suresh
unshelve: add interactive mode...
r42835
-- test for interactive mode on unshelve
$ hg init a
$ cd a
$ echo > b
$ hg ci -Am b
adding b
$ echo > c
$ echo > d
$ hg add .
adding c
adding d
$ hg shelve
shelved as default
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo > e
$ hg add e
$ hg ci -m e
$ hg shelve --patch
Matt Harbison
tests: glob over some timing numbers in test-shelve.t...
r42848 default (*s ago) changes to: b (glob)
Navaneeth Suresh
unshelve: add interactive mode...
r42835
diff --git a/c b/c
new file mode 100644
--- /dev/null
+++ b/c
@@ -0,0 +1,1 @@
+
diff --git a/d b/d
new file mode 100644
--- /dev/null
+++ b/d
@@ -0,0 +1,1 @@
+
$ hg unshelve -i <<EOF
> y
> y
> y
> n
> EOF
unshelving change 'default'
rebasing shelved changes
diff --git a/c b/c
new file mode 100644
examine changes to 'c'?
(enter ? for help) [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+
record change 1/2 to 'c'?
(enter ? for help) [Ynesfdaq?] y
diff --git a/d b/d
new file mode 100644
examine changes to 'd'?
(enter ? for help) [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+
record change 2/2 to 'd'?
(enter ? for help) [Ynesfdaq?] n
$ ls
b
c
e
-- shelve should not contain `c` now
$ hg shelve --patch
Matt Harbison
tests: glob over some timing numbers in test-shelve.t...
r42848 default (*s ago) changes to: b (glob)
Navaneeth Suresh
unshelve: add interactive mode...
r42835
diff --git a/d b/d
new file mode 100644
--- /dev/null
+++ b/d
@@ -0,0 +1,1 @@
+
$ hg unshelve -i <<EOF
> y
> y
> EOF
unshelving change 'default'
rebasing shelved changes
diff --git a/d b/d
new file mode 100644
examine changes to 'd'?
(enter ? for help) [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+
record this change to 'd'?
(enter ? for help) [Ynesfdaq?] y
$ ls
b
c
d
e
$ hg shelve --list
-- now, unshelve selected changes from a file
$ echo B > foo
$ hg add foo
$ hg ci -m 'add B to foo'
$ cat > foo <<EOF
> A
> B
> C
> EOF
$ hg shelve
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat foo
B
$ hg unshelve -i <<EOF
> y
> y
> n
> EOF
unshelving change 'default'
rebasing shelved changes
diff --git a/foo b/foo
2 hunks, 2 lines changed
examine changes to 'foo'?
(enter ? for help) [Ynesfdaq?] y
@@ -1,1 +1,2 @@
+A
B
record change 1/2 to 'foo'?
(enter ? for help) [Ynesfdaq?] y
@@ -1,1 +2,2 @@
B
+C
record change 2/2 to 'foo'?
(enter ? for help) [Ynesfdaq?] n
$ cat foo
A
B
$ hg shelve --patch
Matt Harbison
tests: glob over some timing numbers in test-shelve.t...
r42848 default (*s ago) changes to: add B to foo (glob)
Navaneeth Suresh
unshelve: add interactive mode...
r42835
diff --git a/foo b/foo
--- a/foo
+++ b/foo
@@ -1,2 +1,3 @@
A
B
+C
-- unshelve interactive on conflicts
$ echo A >> bar1
$ echo A >> bar2
$ hg add bar1 bar2
$ hg ci -m 'add A to bars'
$ echo B >> bar1
$ echo B >> bar2
$ hg shelve
shelved as default-01
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo C >> bar1
$ echo C >> bar2
$ hg ci -m 'add C to bars'
$ hg unshelve -i
unshelving change 'default-01'
rebasing shelved changes
merging bar1
merging bar2
warning: conflicts while merging bar1! (edit, then use 'hg resolve --mark')
warning: conflicts while merging bar2! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ cat > bar1 <<EOF
> A
> B
> C
> EOF
$ cat > bar2 <<EOF
> A
> B
> C
> EOF
$ hg resolve -m bar1 bar2
(no more unresolved files)
continue: hg unshelve --continue
Navaneeth Suresh
unshelve: add abort on using continue and interactive together...
r42893
-- using --continue with --interactive should throw an error
$ hg unshelve --continue -i
abort: cannot use both continue and interactive
[255]
Navaneeth Suresh
unshelve: add interactive mode...
r42835 $ cat bar1
A
B
C
Navaneeth Suresh
unshelve: handle stripping changesets on interactive mode...
r42930
#if stripbased
$ hg log -r 3:: -G
@ changeset: 5:506510493902
| tag: tip
| parent: 3:adfeba9a1ac4
| user: shelve@localhost
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: changes to: add A to bars
|
| @ changeset: 4:8b023952e29c
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add C to bars
|
o changeset: 3:adfeba9a1ac4
| user: test
~ date: Thu Jan 01 00:00:00 1970 +0000
summary: add A to bars
#endif
Navaneeth Suresh
unshelve: store information about interactive mode in shelvedstate...
r42889 $ hg unshelve --continue <<EOF
Navaneeth Suresh
unshelve: add interactive mode...
r42835 > y
> y
> y
Navaneeth Suresh
unshelve: handle stripping changesets on interactive mode...
r42930 > n
Navaneeth Suresh
unshelve: add interactive mode...
r42835 > EOF
diff --git a/bar1 b/bar1
1 hunks, 1 lines changed
examine changes to 'bar1'?
(enter ? for help) [Ynesfdaq?] y
@@ -1,2 +1,3 @@
A
+B
C
record change 1/2 to 'bar1'?
(enter ? for help) [Ynesfdaq?] y
diff --git a/bar2 b/bar2
1 hunks, 1 lines changed
examine changes to 'bar2'?
(enter ? for help) [Ynesfdaq?] y
@@ -1,2 +1,3 @@
A
+B
C
record change 2/2 to 'bar2'?
Navaneeth Suresh
unshelve: handle stripping changesets on interactive mode...
r42930 (enter ? for help) [Ynesfdaq?] n
Navaneeth Suresh
unshelve: add interactive mode...
r42835
unshelve of 'default-01' complete
Navaneeth Suresh
unshelve: handle stripping changesets on interactive mode...
r42930
#if stripbased
$ hg log -r 3:: -G
@ changeset: 4:8b023952e29c
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: add C to bars
|
o changeset: 3:adfeba9a1ac4
| user: test
~ date: Thu Jan 01 00:00:00 1970 +0000
summary: add A to bars
#endif