[Bug 4902] New: test-shelve crash with general delta on
mercurial-bugs at selenic.com
mercurial-bugs at selenic.com
Fri Oct 16 01:48:12 UTC 2015
https://bz.mercurial-scm.org/show_bug.cgi?id=4902
Bug ID: 4902
Summary: test-shelve crash with general delta on
Product: Mercurial
Version: default branch
Hardware: PC
OS: Linux
Status: UNCONFIRMED
Severity: feature
Priority: wish
Component: shelve
Assignee: bugzilla at selenic.com
Reporter: pierre-yves.david at ens-lyon.org
CC: mercurial-devel at selenic.com
Running test with general delta enabled by default show `test-shelve``
crashing. This highlight that our test coverage of bundle2 is too light.
--- /home/pyd/src/mercurial-dev/tests/test-shelve.t
+++ /home/pyd/src/mercurial-dev/tests/test-shelve.t.err
@@ -80,8 +80,49 @@
$ hg unshelve
unshelving change 'default'
+ ** unknown exception encountered, please report by visiting
+ ** https://mercurial-scm.org/wiki/BugTracker
+ ** Python 2.7.9 (default, Mar 1 2015, 12:57:24) [GCC 4.9.2]
+ ** Mercurial Distributed SCM (version 3.5.2+756-e8ff886ba364+20151015)
+ ** Extensions loaded: strip, mq, shelve
+ Traceback (most recent call last):
+ File "/home/pyd/src/mercurial-dev/hg", line 43, in <module>
+ mercurial.dispatch.run()
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 54, in run
+ sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 116, in
dispatch
+ ret = _runcatch(req)
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 187, in
_runcatch
+ return _dispatch(req)
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 920, in
_dispatch
+ cmdpats, cmdoptions)
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 679, in
runcommand
+ ret = _runcommand(ui, options, cmd, d)
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 1051, in
_runcommand
+ return checkargs()
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 1011, in
checkargs
+ return cmdfunc()
+ File "/home/pyd/src/mercurial-dev/mercurial/dispatch.py", line 917, in
<lambda>
+ d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
+ File "/home/pyd/src/mercurial-dev/mercurial/util.py", line 801, in check
+ return func(*args, **kwargs)
+ File "/home/pyd/src/mercurial-dev/mercurial/extensions.py", line 183, in
closure
+ return func(*(args + a), **kw)
+ File "/home/pyd/src/mercurial-dev/mercurial/util.py", line 801, in check
+ return func(*args, **kwargs)
+ File "/home/pyd/src/mercurial-dev/hgext/mq.py", line 3514, in mqcommand
+ return orig(ui, repo, *args, **kwargs)
+ File "/home/pyd/src/mercurial-dev/mercurial/util.py", line 801, in check
+ return func(*args, **kwargs)
+ File "/home/pyd/src/mercurial-dev/hgext/shelve.py", line 688, in unshelve
+ shelvedfile(repo, basename, 'hg').applybundle()
+ File "/home/pyd/src/mercurial-dev/hgext/shelve.py", line 99, in
applybundle
+ gen.apply(self.repo, 'unshelve',
+ AttributeError: 'unbundle20' object has no attribute 'apply'
+ [1]
$ hg commit -q -m 'initial commit'
+ [1]
$ hg shelve
nothing changed
@@ -90,8 +131,8 @@
make sure shelve files were backed up
$ ls .hg/shelve-backup
- default.hg
- default.patch
+ ls: cannot access .hg/shelve-backup: No such file or directory
+ [2]
create an mq patch - shelving should work fine with a patch applied
@@ -103,23 +144,26 @@
shelve a change that we will delete later
$ echo a >> a/a
+ $TESTTMP.sh: 51: $TESTTMP.sh: cannot create a/a: Directory nonexistent
+ [2]
$ hg shelve
- shelved as default
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ nothing changed
+ [1]
set up some more complex changes to shelve
$ echo a >> a/a
+ $TESTTMP.sh: 55: $TESTTMP.sh: cannot create a/a: Directory nonexistent
+ [2]
$ hg mv b b.rename
- moving b/b to b.rename/b (glob)
+ b: No such file or directory
+ abort: no files to copy
+ [255]
$ hg cp c c.copy
- $ hg status -C
- M a/a
- A b.rename/b
- b/b
- A c.copy
- c
- R b/b
+ c: No such file or directory
+ abort: no files to copy
+ [255]
+ $ hg status -C
prevent some foot-shooting
@@ -133,25 +177,48 @@
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
+ nothing changed
+ [1]
$ hg status -C
ensure that our shelved changes exist
$ hg shelve -l
- default-01 (*)* changes to '[mq]: second.patch' (glob)
- default (*)* changes to '[mq]: second.patch' (glob)
+ default (1s ago) (changes in empty repository)
$ hg shelve -l -p default
- default (*)* changes to '[mq]: second.patch' (glob)
+ default (1s ago) (changes in empty repository)
diff --git a/a/a b/a/a
- --- a/a/a
+ new file mode 100644
+ --- /dev/null
+++ b/a/a
- @@ -1,1 +1,2 @@
- a
+ @@ -0,0 +1,1 @@
+a
+ diff --git a/b/b b/b/b
+ new file mode 100644
+ --- /dev/null
+ +++ b/b/b
+ @@ -0,0 +1,1 @@
+ +b
+ diff --git a/c b/c
+ new file mode 100644
+ --- /dev/null
+ +++ b/c
+ @@ -0,0 +1,1 @@
+ +c
+ diff --git a/d b/d
+ new file mode 100644
+ --- /dev/null
+ +++ b/d
+ @@ -0,0 +1,1 @@
+ +d
+ diff --git a/x b/x
+ new file mode 100644
+ --- /dev/null
+ +++ b/x
+ @@ -0,0 +1,1 @@
+ +x
$ hg shelve --list --addremove
abort: options '--list' and '--addremove' may not be used together
@@ -165,23 +232,24 @@
ensure shelve backups aren't overwritten
$ ls .hg/shelve-backup/
- default-1.hg
- default-1.patch
default.hg
default.patch
local edits should not prevent a shelved change from applying
$ printf "z\na\n" > a/a
+ $TESTTMP.sh: 83: $TESTTMP.sh: cannot create a/a: Directory nonexistent
+ [2]
$ hg unshelve --keep
- unshelving change 'default-01'
- temporarily committing pending changes (restore with 'hg unshelve --abort')
- rebasing shelved changes
- rebasing 4:4702e8911fe0 "changes to '[mq]: second.patch'" (tip)
- merging a/a
+ abort: no shelved changes to apply!
+ [255]
$ hg revert --all -q
$ rm a/a.orig b.rename/b c.copy
+ rm: cannot remove 'a/a.orig': No such file or directory
+ rm: cannot remove 'b.rename/b': No such file or directory
+ rm: cannot remove 'c.copy': No such file or directory
+ [1]
apply it and make sure our state is as expected
@@ -192,28 +260,20 @@
.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
+ .hg/shelve-backup/default-1.hg: file not found
$ touch -t 200001010000 .hg/shelve-backup/default-1.hg
$ 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
+ abort: no shelved changes to apply!
+ [255]
+ $ hg status -C
$ hg shelve -l
(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
@@ -228,825 +288,17 @@
(this tests also that editor is invoked, if '--edit' is specified)
$ hg status -C
- M a/a
- A b.rename/b
- b/b
- A c.copy
- c
- R b/b
$ 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 at localhost
- HG: branch 'default'
- HG: changed a/a
+ abort: a: No such file or directory
+ [255]
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
- wibble (*) wat (glob)
- a/a | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
and now "a/a" should reappear
$ cd a
+ $TESTTMP.sh: 119: cd: can't cd to a
$ hg unshelve -q wibble
- $ cd ..
- $ hg status -C
- M a/a
- A b.rename/b
- b/b
- A c.copy
- c
- R b/b
-
-ensure old shelve backups are being deleted automatically
-
- $ ls .hg/shelve-backup/
- default-01.hg
- default-01.patch
- wibble.hg
- wibble.patch
-
-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'
- temporarily committing pending changes (restore with 'hg unshelve --abort')
- rebasing shelved changes
- rebasing 5:4702e8911fe0 "changes to '[mq]: second.patch'" (tip)
- merging a/a
- warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
- unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
- [1]
-
-ensure that we have a merge with unresolved conflicts
-
- $ hg heads -q --template '{rev}\n'
- 5
- 4
- $ hg parents -q --template '{rev}\n'
- 4
- 5
- $ 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
- +<<<<<<< dest: * - shelve: pending changes temporary commit (glob)
- c
- +=======
- +a
- +>>>>>>> source: 4702e8911fe0 - shelve: changes to '[mq]: second.patch'
- 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
- $ 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
- rebase aborted
- unshelve of 'default' aborted
- $ hg heads -q
- 3:2e69b451d1ea
- $ hg parents
- changeset: 3:2e69b451d1ea
- 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 while merging a/a! (edit, 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
- (no more unresolved files)
-
- $ hg commit -m 'commit while unshelve in progress'
- abort: unshelve already in progress
- (use 'hg unshelve --continue' or 'hg unshelve --abort')
- [255]
-
- $ hg unshelve -c
- rebasing 5:4702e8911fe0 "changes to '[mq]: second.patch'" (tip)
- unshelve of 'default' complete
-
-ensure the repo is as we hope
-
- $ hg parents
- changeset: 3:2e69b451d1ea
- tag: tip
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: second
-
- $ hg heads -q
- 3:2e69b451d1ea
-
- $ hg status -C
- A b.rename/b
- b/b
- A c.copy
- 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
- $ rm a/a.orig b.rename/b c.copy
- $ 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'
- temporarily committing pending changes (restore with 'hg unshelve --abort')
- rebasing shelved changes
- rebasing 6:c5e6910e7601 "changes to 'second'" (tip)
- merging a/a
- note: rebase of 6:c5e6910e7601 created no changes to commit
- $ hg parents -q
- 4:33f7f61e6c5e
- $ 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
- default (*) changes to 'create conflict' (glob)
- $ hg unshelve --keep
- unshelving change 'default'
- $ hg shelve --list
- default (*) changes to 'create conflict' (glob)
- $ hg shelve --cleanup
- $ hg shelve --list
-
- $ 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]
-
-test bookmarks
-
- $ hg bookmark test
- $ hg bookmark
- * test 4:33f7f61e6c5e
- $ hg shelve
- shelved as test
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ hg bookmark
- * test 4:33f7f61e6c5e
- $ hg unshelve
- unshelving change 'test'
- $ hg bookmark
- * test 4:33f7f61e6c5e
-
-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
- test (*) changes to 'create conflict' (glob)
- $ hg bookmark
- * test 4:33f7f61e6c5e
- $ hg --config extensions.mq=! unshelve
- unshelving change 'test'
- $ hg bookmark
- * test 4:33f7f61e6c5e
-
-shelve should leave dirstate clean (issue4055)
-
- $ 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=
- rebasing 2:323bfa07f744 "xyz" (tip)
- merging x
- saved backup bundle to
$TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-78114325-backup.hg (glob)
- $ hg unshelve
- unshelving change 'default'
- rebasing shelved changes
- rebasing 4:b8fefe789ed0 "changes to 'xyz'" (tip)
- $ hg status
- M z
-
- $ cd ..
-
-shelve should only unshelve pending changes (issue4068)
-
- $ 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'
- rebasing shelved changes
- rebasing 3:0cae6656c016 "changes to 'c'" (tip)
- $ 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'
- rebasing shelved changes
- rebasing 3:be58f65f55fb "changes to 'b'" (tip)
- $ hg status
- A d
-
-test bug 4073 we need to enable obsolete markers for it
-
- $ cat >> $HGRCPATH << EOF
- > [experimental]
- > evolution=createmarkers
- > 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'
-
-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
-
-
-unshelve and conflicts with tracked and untracked files
-
- 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
- $ echo g > f
- $ hg unshelve
- unshelving change 'default'
- $ hg st
- A f
- ? f.orig
- $ cat f
- f
- $ cat f.orig
- g
-
- 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
- $ hg log -G --template '{rev} {desc|firstline} {author}' -R
bundle://.hg/shelved/default.hg -r 'bundle()'
- o 4 changes to 'commit stuff' shelve at 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
- $ echo 1 > a
- $ hg unshelve --date '1073741824 0'
- unshelving change 'default'
- temporarily committing pending changes (restore with 'hg unshelve --abort')
- rebasing shelved changes
- rebasing 5:23b29cada8ba "changes to 'commit stuff'" (tip)
- merging f
- warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
- unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
- [1]
- $ hg log -G --template '{rev} {desc|firstline} {author} {date|isodate}'
- @ 5 changes to 'commit stuff' shelve at localhost 1970-01-01 00:00 +0000
- |
- | @ 4 pending changes temporary commit shelve at localhost 2004-01-10 13:37
+0000
- |/
- o 3 commit stuff test 1970-01-01 00:00 +0000
- |
- | o 2 c test 1970-01-01 00:00 +0000
- |/
- o 0 a test 1970-01-01 00:00 +0000
-
- $ hg st
- M f
- ? f.orig
- $ cat f
- <<<<<<< dest: 5f6b880e719b - shelve: pending changes temporary commit
- g
- =======
- f
- >>>>>>> source: 23b29cada8ba - shelve: changes to 'commit stuff'
- $ cat f.orig
- g
- $ hg unshelve --abort
- rebase aborted
- unshelve of 'default' aborted
- $ hg st
- M a
- ? f.orig
- $ cat f.orig
- g
- $ hg unshelve
- unshelving change 'default'
- temporarily committing pending changes (restore with 'hg unshelve --abort')
- rebasing shelved changes
- rebasing 5:23b29cada8ba "changes to 'commit stuff'" (tip)
- $ 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
- rebasing 5:23b29cada8ba "changes to 'commit stuff'" (tip)
- merging f
- warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
- unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
- [1]
- $ hg st
- M f
- ? f.orig
- $ cat f
- <<<<<<< dest: * - test: intermediate other change (glob)
- g
- =======
- f
- >>>>>>> source: 23b29cada8ba - shelve: changes to 'commit stuff'
- $ cat f.orig
- g
- $ hg unshelve --abort
- rebase aborted
- unshelve of 'default' aborted
- $ hg st
- ? f.orig
- $ cat f.orig
- g
- $ hg shelve --delete default
-
-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 bookmark
- * test 4:33f7f61e6c5e
- $ hg unshelve
- unshelving change 'default'
- rebasing shelved changes
- rebasing 5:4b555fdb4e96 "changes to 'second'" (tip)
- merging a/a
- warning: conflicts while merging a/a! (edit, then use 'hg resolve --mark')
- unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
- [1]
- $ hg bookmark
- test 4:33f7f61e6c5e
-
-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
- rebasing 5:4b555fdb4e96 "changes to 'second'" (tip)
- note: rebase of 5:4b555fdb4e96 created no changes to commit
- unshelve of 'default' complete
- $ hg bookmark
- * test 4:33f7f61e6c5e
- $ 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)
- phases: 5 draft
-
- $ 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]
-
-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 --config ui.interactive=false
- abort: running non-interactively
- [255]
- $ 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 bookmark
- * test 4:33f7f61e6c5e
- $ 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
- $ hg bookmark
- * test 4:33f7f61e6c5e
- $ cat a/a
- a
- a
- c
- x
- x
-
-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
- (leaving bookmark test)
- $ hg shelve --list
- $ echo 'patch a' > shelf-patch-a
- $ hg add shelf-patch-a
- $ hg shelve
- shelved as default
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ echo 'patch b' > shelf-patch-b
- $ hg add shelf-patch-b
- $ hg shelve
- shelved as default-01
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ hg shelve --patch default default-01
- abort: --patch expects a single shelf
- [255]
- $ hg shelve --stat default default-01
- abort: --stat expects a single shelf
- [255]
- $ hg shelve --patch default
- default (* ago) changes to 'create conflict' (glob)
-
- diff --git a/shelf-patch-a b/shelf-patch-a
- new file mode 100644
- --- /dev/null
- +++ b/shelf-patch-a
- @@ -0,0 +1,1 @@
- +patch a
- $ hg shelve --stat default
- default (* ago) changes to 'create conflict' (glob)
- shelf-patch-a | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
- $ hg shelve --patch nonexistentshelf
- abort: cannot find shelf nonexistentshelf
- [255]
- $ hg shelve --stat nonexistentshelf
- abort: cannot find shelf nonexistentshelf
- [255]
-
- $ cd ..
-
-Shelve from general delta repo uses bundle2 on disk
---------------------------------------------------
-
-no general delta
-
- $ hg clone --pull repo bundle1 --config format.generaldelta=0
- requesting all changes
- adding changesets
- adding manifests
- adding file changes
- added 5 changesets with 8 changes to 6 files
- updating to branch default
- 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ cd bundle1
- $ echo babar > jungle
- $ hg add jungle
- $ hg shelve
- shelved as default
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ hg debugbundle .hg/shelved/*.hg
- 7e30d8ac6f23cfc84330fd7e698730374615d21a
- $ cd ..
-
-with general delta
-
- $ hg clone --pull repo bundle2 --config format.generaldelta=1
- requesting all changes
- adding changesets
- adding manifests
- adding file changes
- added 5 changesets with 8 changes to 6 files
- updating to branch default
- 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ cd bundle2
- $ echo babar > jungle
- $ hg add jungle
- $ hg shelve
- shelved as default
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ hg debugbundle .hg/shelved/*.hg
- Stream params: {'Compression': 'BZ'}
- changegroup -- "{'version': '02'}"
- 7e30d8ac6f23cfc84330fd7e698730374615d21a
- $ cd ..
-
-test Abort unshelve always gets user out of the unshelved state
----------------------------------------------------------------
- $ hg init salvage
- $ cd salvage
- $ echo 'content' > root
- $ hg commit -A -m 'root' -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]
-Wreak havoc on the unshelve process
- $ rm .hg/unshelverebasestate
- $ hg unshelve --abort
- unshelve of 'default' aborted
- abort: No such file or directory
- [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
- $ hg unshelve --abort |& grep 'rebase aborted'
- rebase aborted
- $ hg up -C .
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ERROR: test-shelve.t output changed
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Mercurial-devel
mailing list