D5388: tests: split test-shelve.t in two

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Dec 5 23:44:48 UTC 2018


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  test-shelve.t dominated run time for all shelve tests.
  
  Before:
  
  Ran 9 tests, 1 skipped, 0 failed.
  =================================
  
  real    0m43.568s
  user    2m15.822s
  sys     0m40.857s
  
  After:
  
  Ran 11 tests, 1 skipped, 0 failed.
  ==================================
  
  real    0m24.574s
  user    2m21.354s
  sys     0m40.435s

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D5388

AFFECTED FILES
  tests/test-shelve.t
  tests/test-shelve2.t

CHANGE DETAILS

diff --git a/tests/test-shelve.t b/tests/test-shelve2.t
copy from tests/test-shelve.t
copy to tests/test-shelve2.t
--- a/tests/test-shelve.t
+++ b/tests/test-shelve2.t
@@ -20,657 +20,8 @@
 
 #endif
 
-  $ 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
-
-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.
-  
-      In bare shelve (when no files are specified, without interactive, include
-      and exclude option), shelving remembers information if the working
-      directory was on newly created branch, in other words working directory
-      was on different branch than its first parent. In this situation
-      unshelving restores branch information to the working directory.
-  
-      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
-   -u --unknown             store unknown files in the shelve
-      --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               output patches for changes (provide the names of the
-                            shelved changes as positional arguments)
-   -i --interactive         interactive mode, only works while creating a shelve
-      --stat                output diffstat-style summary of changes (provide
-                            the names of the shelved changes as positional
-                            arguments)
-   -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)
-
-shelving in an empty repo should be possible
-(this tests also that editor is not invoked, if '--edit' is not
-specified)
-
-  $ HGEDITOR=cat hg shelve
-  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]
-
-make sure shelve files were backed up
-
-  $ ls .hg/shelve-backup
-  default.hg
-  default.patch
-  default.shelve
-
-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
-  abort: shelved change names can not contain slashes
-  [255]
-  $ hg shelve -n .baz
-  abort: shelved change names can not start with '.'
-  [255]
-  $ hg shelve -n foo\\bar
-  abort: shelved change names can not contain slashes
-  [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
-  nothing changed
-  [1]
-  $ hg branch x\\y -q
-  $ hg commit -q -m "Branch commit 2"
-  $ hg shelve
-  nothing changed
-  [1]
-
-cleaning the branches made for name checking tests
-
-  $ hg up default -q
-  $ hg strip e9177275307e+6a6d231f43d+882bae7c62c2 -q
-
-create an mq patch - shelving should work fine with a patch applied
-
-  $ echo n > n
-  $ hg add n
-  $ hg commit n -m second
-  $ hg qnew second.patch
-
-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
-  $ 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
-  default-01      (*)* changes to: [mq]: second.patch (glob)
-  default         (*)* changes to: [mq]: second.patch (glob)
-
-  $ hg shelve -l -p default
-  default         (*)* changes to: [mq]: second.patch (glob)
-  
-  diff --git a/a/a b/a/a
-  --- a/a/a
-  +++ b/a/a
-  @@ -1,1 +1,2 @@
-   a
-  +a
-
-  $ hg shelve --list --addremove
-  abort: options '--list' and '--addremove' may not be used together
-  [255]
-
-delete our older shelved change
-
-  $ hg shelve -d default
-  $ hg qfinish -a -q
-
-ensure shelve backups aren't overwritten
-
-  $ ls .hg/shelve-backup/
-  default-1.hg
-  default-1.patch
-  default-1.shelve
-  default.hg
-  default.patch
-  default.shelve
-
-local edits should not prevent a shelved change from applying
-
-  $ printf "z\na\n" > a/a
-  $ hg unshelve --keep
-  unshelving change 'default-01'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a/a
-
-  $ hg revert --all -q
-  $ rm a/a.orig b.rename/b c.copy
-
-apply it and make sure our state is as expected
-
-(this also tests that same timestamp prevents backups from being
-removed, even though there are more than 'maxbackups' backups)
-
-  $ f -t .hg/shelve-backup/default.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
-
-  $ 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
-
-(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-01.shelve
-  default-1.hg
-  default-1.patch
-  default-1.shelve
-  default.hg
-  default.patch
-  default.shelve
-
-  $ 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
-(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
-
-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
-  $ 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
-  default-01.shelve
-  wibble.hg
-  wibble.patch
-  wibble.shelve
-
-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
-  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 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:
-  # 
-  #     a/a
-  # 
-  # To mark files as resolved:  hg resolve --mark FILE
-  
-  # To continue:    hg unshelve --continue
-  # To abort:       hg unshelve --abort
-  
-
-ensure that we have a merge with unresolved conflicts
-
-#if phasebased
-  $ hg heads -q --template '{rev}\n'
-  8
-  5
-  $ hg parents -q --template '{rev}\n'
-  8
-  5
-#endif
-
-#if stripbased
-  $ hg heads -q --template '{rev}\n'
-  5
-  4
-  $ hg parents -q --template '{rev}\n'
-  4
-  5
-#endif
-
-  $ 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
-  +<<<<<<< shelve:       2377350b6337 - shelve: pending changes temporary commit
-   c
-  +=======
-  +a
-  +>>>>>>> working-copy: a68ec3400638 - 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
-  unshelve of 'default' aborted
-  $ hg heads -q
-  [37]:2e69b451d1ea (re)
-  $ hg parents
-  changeset:   [37]:2e69b451d1ea (re)
-  tag:         tip
-  parent:      3:509104101065 (?)
-  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 in progress
-  [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)
-  continue: hg unshelve --continue
-
-  $ hg commit -m 'commit while unshelve in progress'
-  abort: unshelve already in progress
-  (use 'hg unshelve --continue' or 'hg unshelve --abort')
-  [255]
-
-  $ hg graft --continue
-  abort: no graft in progress
-  (continue: hg unshelve --continue)
-  [255]
-  $ hg unshelve -c
-  unshelve of 'default' complete
-
-ensure the repo is as we hope
-
-  $ hg parents
-  changeset:   [37]:2e69b451d1ea (re)
-  tag:         tip
-  parent:      3:509104101065 (?)
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     second
-  
-  $ hg heads -q
-  [37]:2e69b451d1ea (re)
-
-  $ 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
-
-#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
-
-#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 -n symlink
-  $ hg status a/a
-  M a/a
-  $ hg revert a/a
-
-#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
-
-#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
-
-  $ 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
-  (4|13):33f7f61e6c5e (re)
-  $ hg shelve -l
-  default         (*)* changes to: second (glob)
-  $ hg status
-  M a/a
-  A foo/foo
-  $ cat a/a
-  a
-  c
-  a
-  $ cat > a/a << EOF
-  > a
-  > c
-  > x
-  > EOF
-
-  $ HGMERGE=true hg unshelve
-  unshelving change 'default'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a/a
-  note: unshelved changes already existed in the working copy
-  $ hg parents -q
-  (4|13):33f7f61e6c5e (re)
-  $ 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 -k
-  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|13):33f7f61e6c5e (re)
-  $ hg shelve
-  shelved as test
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg bookmark
-   \* test                      (4|13):33f7f61e6c5e (re)
-  $ hg unshelve
-  unshelving change 'test'
-  $ hg bookmark
-   \* test                      (4|13):33f7f61e6c5e (re)
-
-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|13):33f7f61e6c5e (re)
-  $ hg --config extensions.mq=! unshelve
-  unshelving change 'test'
-  $ hg bookmark
-   \* test                      (4|13):33f7f61e6c5e (re)
-
 shelve should leave dirstate clean (issue4055)
 
-  $ cd ..
   $ hg init shelverebase
   $ cd shelverebase
   $ printf 'x\ny\n' > x
@@ -927,220 +278,6 @@
   $ cat f.orig
   g
   $ hg shelve --delete default
-
-Recreate some conflict again
-
-  $ cd ../repo
-  $ hg up -C -r 2e69b451d1ea
-  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|13):33f7f61e6c5e (re)
-  $ hg unshelve
-  unshelving change 'default'
-  rebasing shelved changes
-  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|13):33f7f61e6c5e (re)
-
-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
-  $ hg resolve -m a/a
-  (no more unresolved files)
-  continue: hg unshelve --continue
-  $ hg unshelve -c
-  note: unshelved changes already existed in the working copy
-  unshelve of 'default' complete
-  $ hg bookmark
-   \* test                      (4|13):33f7f61e6c5e (re)
-  $ hg diff
-  $ hg status
-  ? a/a.orig
-  ? foo/foo
-  $ hg summary
-  parent: (4|13):33f7f61e6c5e tip (re)
-   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|13):33f7f61e6c5e (re)
-  $ hg unshelve
-  unshelving change 'test'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a/a
-  $ hg bookmark
-   \* test                      (4|13):33f7f61e6c5e (re)
-  $ cat a/a
-  a
-  a
-  c
-  x
-  x
-
-shelve --patch and shelve --stat should work with valid shelfnames
-
-  $ 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
-  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
-  $ hg shelve --stat default default-01
-  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(-)
-  $ hg shelve --patch default
-  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
-  $ hg shelve --stat default
-  default         (*)* 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]
-  $ hg shelve --patch default nonexistentshelf
-  abort: cannot find shelf nonexistentshelf
-  [255]
-
-when the user asks for a patch, we assume they want the most recent shelve if
-they don't provide a shelve name
-
-  $ hg shelve --patch
-  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 ..
 
 you shouldn't be able to ask for the patch/stats of the most recent shelve if
@@ -1158,175 +295,6 @@
 
   $ cd ..
 
-Shelve from general delta repo uses bundle2 on disk
---------------------------------------------------
-
-no general delta
-
-  $ hg clone --pull repo bundle1 --config format.usegeneraldelta=0
-  requesting all changes
-  adding changesets
-  adding manifests
-  adding file changes
-  added 5 changesets with 8 changes to 6 files
-  new changesets cc01e2b0c59f:33f7f61e6c5e
-  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
-  330882a04d2ce8487636b1fb292e5beea77fa1e3
-  $ cd ..
-
-with general delta
-
-  $ hg clone --pull repo bundle2 --config format.usegeneraldelta=1
-  requesting all changes
-  adding changesets
-  adding manifests
-  adding file changes
-  added 5 changesets with 8 changes to 6 files
-  new changesets cc01e2b0c59f:33f7f61e6c5e
-  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 -- {nbchanges: 1, version: 02} (mandatory: True)
-      330882a04d2ce8487636b1fb292e5beea77fa1e3
-  $ cd ..
-
-Test visibility of in-memory changes inside transaction to external hook
-------------------------------------------------------------------------
-
-  $ cd repo
-
-  $ echo xxxx >> x
-  $ hg commit -m "#5: changes to invoke rebase"
-
-  $ cat > $TESTTMP/checkvisibility.sh <<EOF
-  > echo "==== \$1:"
-  > hg parents --template "VISIBLE {rev}:{node|short}\n"
-  > # test that pending changes are hidden
-  > unset HG_PENDING
-  > hg parents --template "ACTUAL  {rev}:{node|short}\n"
-  > echo "===="
-  > EOF
-
-  $ cat >> .hg/hgrc <<EOF
-  > [defaults]
-  > # to fix hash id of temporary revisions
-  > unshelve = --date '0 0'
-  > EOF
-
-"hg unshelve" at REV5 implies steps below:
-
-(1) commit changes in the working directory (REV6)
-(2) unbundle shelved revision (REV7)
-(3) rebase: merge REV7 into REV6 (REV6 => REV6, REV7)
-(4) rebase: commit merged revision (REV8)
-(5) rebase: update to REV6 (REV8 => REV6)
-(6) update to REV5 (REV6 => REV5)
-(7) abort transaction
-
-== test visibility to external preupdate hook
-
-  $ cat >> .hg/hgrc <<EOF
-  > [hooks]
-  > preupdate.visibility = sh $TESTTMP/checkvisibility.sh preupdate
-  > EOF
-
-  $ echo nnnn >> n
-
-  $ sh $TESTTMP/checkvisibility.sh before-unshelving
-  ==== before-unshelving:
-  VISIBLE (5|19):703117a2acfb (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-
-  $ hg unshelve --keep default
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  ==== preupdate:
-  VISIBLE (6|20):54c00d20fb3f (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-  ==== preupdate:
-  VISIBLE (8|21):8efe6f7537dc (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-  ==== preupdate:
-  VISIBLE (6|20):54c00d20fb3f (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-
-  $ cat >> .hg/hgrc <<EOF
-  > [hooks]
-  > preupdate.visibility =
-  > EOF
-
-  $ sh $TESTTMP/checkvisibility.sh after-unshelving
-  ==== after-unshelving:
-  VISIBLE (5|19):703117a2acfb (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-
-== test visibility to external update hook
-
-  $ hg update -q -C 703117a2acfb
-
-  $ cat >> .hg/hgrc <<EOF
-  > [hooks]
-  > update.visibility = sh $TESTTMP/checkvisibility.sh update
-  > EOF
-
-  $ echo nnnn >> n
-
-  $ sh $TESTTMP/checkvisibility.sh before-unshelving
-  ==== before-unshelving:
-  VISIBLE (5|19):703117a2acfb (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-
-  $ hg unshelve --keep default
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  ==== update:
-  VISIBLE (6|20):54c00d20fb3f (re)
-  VISIBLE 1?7:492ed9d705e5 (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-  ==== update:
-  VISIBLE (6|20):54c00d20fb3f (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-  ==== update:
-  VISIBLE (5|19):703117a2acfb (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-
-  $ cat >> .hg/hgrc <<EOF
-  > [hooks]
-  > update.visibility =
-  > EOF
-
-  $ sh $TESTTMP/checkvisibility.sh after-unshelving
-  ==== after-unshelving:
-  VISIBLE (5|19):703117a2acfb (re)
-  ACTUAL  (5|19):703117a2acfb (re)
-  ====
-
-  $ cd ..
-
 test .orig files go where the user wants them to
 ---------------------------------------------------------------
   $ hg init salvage
@@ -1364,43 +332,6 @@
 
   $ cd ..
 
-Keep active bookmark while (un)shelving even on shared repo (issue4940)
------------------------------------------------------------------------
-
-  $ cat <<EOF >> $HGRCPATH
-  > [extensions]
-  > share =
-  > EOF
-
-  $ hg bookmarks -R repo
-     test                      (4|13):33f7f61e6c5e (re)
-  $ hg share -B repo share
-  updating working directory
-  6 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ cd share
-
-  $ hg bookmarks
-     test                      (4|13):33f7f61e6c5e (re)
-  $ hg bookmarks foo
-  $ hg bookmarks
-   \* foo                       (5|19):703117a2acfb (re)
-     test                      (4|13):33f7f61e6c5e (re)
-  $ echo x >> x
-  $ hg shelve
-  shelved as foo
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg bookmarks
-   \* foo                       (5|19):703117a2acfb (re)
-     test                      (4|13):33f7f61e6c5e (re)
-
-  $ hg unshelve
-  unshelving change 'foo'
-  $ hg bookmarks
-   \* foo                       (5|19):703117a2acfb (re)
-     test                      (4|13):33f7f61e6c5e (re)
-
-  $ cd ..
-
 Shelve and unshelve unknown files. For the purposes of unshelve, a shelved
 unknown file is the same as a shelved added file, except that it will be in
 unknown state after unshelve if and only if it was either absent or unknown
diff --git a/tests/test-shelve.t b/tests/test-shelve.t
--- a/tests/test-shelve.t
+++ b/tests/test-shelve.t
@@ -668,269 +668,8 @@
   $ hg bookmark
    \* test                      (4|13):33f7f61e6c5e (re)
 
-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 5c4c67fb7dce
-  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 6c103be8f4e4 --config extensions.rebase=
-  rebasing 2:323bfa07f744 "xyz"( \(tip\))? (re)
-  merging x
-  saved backup bundle to \$TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-(78114325|7ae538ef)-rebase.hg (re)
-  $ hg unshelve
-  unshelving change 'default'
-  rebasing shelved changes
-  $ 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 3903775176ed
-  $ 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 0e067c57feba
-  $ hg unshelve
-  unshelving change 'default'
-  rebasing shelved changes
-  $ 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 3903775176ed
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg unshelve
-  unshelving change 'default'
-  rebasing shelved changes
-  $ hg status
-  A d
-
-test bug 4073 we need to enable obsolete markers for it
-
-  $ cat >> $HGRCPATH << EOF
-  > [experimental]
-  > evolution.createmarkers=True
-  > EOF
-  $ hg shelve
-  shelved as default
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg debugobsolete `hg log -r 0e067c57feba -T '{node}'`
-  obsoleted 1 changesets
-  $ 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
-#if repobundlerepo
-  $ hg log -G --template '{rev}  {desc|firstline}  {author}' -R bundle://.hg/shelved/default.hg -r 'bundle()' --hidden
-  o  [48]  changes to: commit stuff  shelve at localhost (re)
-  |
-  ~
-#endif
-  $ hg log -G --template '{rev}  {desc|firstline}  {author}'
-  @  [37]  commit stuff  test (re)
-  |
-  | 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
-  merging f
-  warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-
-#if phasebased
-  $ hg log -G --template '{rev}  {desc|firstline}  {author}  {date|isodate}'
-  @  9  pending changes temporary commit  shelve at localhost  2004-01-10 13:37 +0000
-  |
-  | @  8  changes to: commit stuff  shelve at localhost  1970-01-01 00:00 +0000
-  |/
-  o  7  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
-  
-#endif
-
-#if stripbased
-  $ 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
-  
-#endif
-
-  $ hg st
-  M f
-  ? f.orig
-  $ cat f
-  <<<<<<< shelve:       d44eae5c3d33 - shelve: pending changes temporary commit
-  g
-  =======
-  f
-  >>>>>>> working-copy: aef214a5229c - shelve: changes to: commit stuff
-  $ cat f.orig
-  g
-  $ hg unshelve --abort -t false
-  tool option will be ignored
-  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
-  $ 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
-  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
-  <<<<<<< shelve:       6b563750f973 - test: intermediate other change
-  g
-  =======
-  f
-  >>>>>>> working-copy: aef214a5229c - shelve: changes to: commit stuff
-  $ cat f.orig
-  g
-  $ hg unshelve --abort
-  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 2e69b451d1ea
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (leaving bookmark test)
@@ -1143,21 +882,6 @@
 
   $ cd ..
 
-you shouldn't be able to ask for the patch/stats of the most recent shelve if
-there are no shelves
-
-  $ hg init noshelves
-  $ cd noshelves
-
-  $ hg shelve --patch
-  abort: there are no shelves to show
-  [255]
-  $ hg shelve --stat
-  abort: there are no shelves to show
-  [255]
-
-  $ cd ..
-
 Shelve from general delta repo uses bundle2 on disk
 --------------------------------------------------
 
@@ -1327,43 +1051,6 @@
 
   $ cd ..
 
-test .orig files go where the user wants them to
----------------------------------------------------------------
-  $ 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 --config 'ui.origbackuppath=.hg/origbackups'
-  warning: conflicts while merging root! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-  $ ls .hg/origbackups
-  root
-  $ rm -rf .hg/origbackups
-
-test Abort unshelve always gets user out of the unshelved state
----------------------------------------------------------------
-
-with a corrupted shelve state file
-  $ sed 's/ae8c668541e8/123456789012/' .hg/shelvedstate > ../corrupt-shelvedstate
-  $ mv ../corrupt-shelvedstate .hg/shelvestate
-  $ hg unshelve --abort 2>&1 | grep 'aborted'
-  unshelve of 'default' aborted
-  $ hg summary
-  parent: 0:ae8c668541e8 tip
-   root
-  branch: default
-  commit: 1 modified
-  update: (current)
-  phases: 1 draft
-  $ hg up -C .
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-
-  $ cd ..
-
 Keep active bookmark while (un)shelving even on shared repo (issue4940)
 -----------------------------------------------------------------------
 
@@ -1400,505 +1087,3 @@
      test                      (4|13):33f7f61e6c5e (re)
 
   $ cd ..
-
-Shelve and unshelve unknown files. For the purposes of unshelve, a shelved
-unknown file is the same as a shelved added file, except that it will be in
-unknown state after unshelve if and only if it was either absent or unknown
-before the unshelve operation.
-
-  $ hg init unknowns
-  $ cd unknowns
-
-The simplest case is if I simply have an unknown file that I shelve and unshelve
-
-  $ echo unknown > unknown
-  $ hg status
-  ? unknown
-  $ hg shelve --unknown
-  shelved as default
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg status
-  $ hg unshelve
-  unshelving change 'default'
-  $ hg status
-  ? unknown
-  $ rm unknown
-
-If I shelve, add the file, and unshelve, does it stay added?
-
-  $ echo unknown > unknown
-  $ hg shelve -u
-  shelved as default
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg status
-  $ touch unknown
-  $ hg add unknown
-  $ hg status
-  A unknown
-  $ hg unshelve
-  unshelving change 'default'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging unknown
-  $ hg status
-  A unknown
-  $ hg forget unknown
-  $ rm unknown
-
-And if I shelve, commit, then unshelve, does it become modified?
-
-  $ echo unknown > unknown
-  $ hg shelve -u
-  shelved as default
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg status
-  $ touch unknown
-  $ hg add unknown
-  $ hg commit -qm "Add unknown"
-  $ hg status
-  $ hg unshelve
-  unshelving change 'default'
-  rebasing shelved changes
-  merging unknown
-  $ hg status
-  M unknown
-  $ hg remove --force unknown
-  $ hg commit -qm "Remove unknown"
-
-  $ cd ..
-
-We expects that non-bare shelve keeps newly created branch in
-working directory.
-
-  $ hg init shelve-preserve-new-branch
-  $ cd shelve-preserve-new-branch
-  $ echo "a" >> a
-  $ hg add a
-  $ echo "b" >> b
-  $ hg add b
-  $ hg commit -m "ab"
-  $ echo "aa" >> a
-  $ echo "bb" >> b
-  $ hg branch new-branch
-  marked working directory as branch new-branch
-  (branches are permanent and global, did you want a bookmark?)
-  $ hg status
-  M a
-  M b
-  $ hg branch
-  new-branch
-  $ hg shelve a
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg branch
-  new-branch
-  $ hg status
-  M b
-  $ touch "c" >> c
-  $ hg add c
-  $ hg status
-  M b
-  A c
-  $ hg shelve --exclude c
-  shelved as default-01
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg branch
-  new-branch
-  $ hg status
-  A c
-  $ hg shelve --include c
-  shelved as default-02
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg branch
-  new-branch
-  $ hg status
-  $ echo "d" >> d
-  $ hg add d
-  $ hg status
-  A d
-
-We expect that bare-shelve will not keep branch in current working directory.
-
-  $ hg shelve
-  shelved as default-03
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg branch
-  default
-  $ cd ..
-
-When i shelve commit on newly created branch i expect
-that after unshelve newly created branch will be preserved.
-
-  $ hg init shelve_on_new_branch_simple
-  $ cd shelve_on_new_branch_simple
-  $ echo "aaa" >> a
-  $ hg commit -A -m "a"
-  adding a
-  $ hg branch
-  default
-  $ hg branch test
-  marked working directory as branch test
-  (branches are permanent and global, did you want a bookmark?)
-  $ echo "bbb" >> a
-  $ hg status
-  M a
-  $ hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg branch
-  default
-  $ echo "bbb" >> b
-  $ hg status
-  ? b
-  $ hg unshelve
-  unshelving change 'default'
-  marked working directory as branch test
-  $ hg status
-  M a
-  ? b
-  $ hg branch
-  test
-  $ cd ..
-
-When i shelve commit on newly created branch, make
-some changes, unshelve it and running into merge
-conflicts i expect that after fixing them and
-running unshelve --continue newly created branch
-will be preserved.
-
-  $ hg init shelve_on_new_branch_conflict
-  $ cd shelve_on_new_branch_conflict
-  $ echo "aaa" >> a
-  $ hg commit -A -m "a"
-  adding a
-  $ hg branch
-  default
-  $ hg branch test
-  marked working directory as branch test
-  (branches are permanent and global, did you want a bookmark?)
-  $ echo "bbb" >> a
-  $ hg status
-  M a
-  $ hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg branch
-  default
-  $ echo "ccc" >> a
-  $ hg status
-  M a
-  $ hg unshelve
-  unshelving change 'default'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a
-  warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-  $ echo "aaabbbccc" > a
-  $ rm a.orig
-  $ hg resolve --mark a
-  (no more unresolved files)
-  continue: hg unshelve --continue
-  $ hg unshelve --continue
-  marked working directory as branch test
-  unshelve of 'default' complete
-  $ cat a
-  aaabbbccc
-  $ hg status
-  M a
-  $ hg branch
-  test
-  $ hg commit -m "test-commit"
-
-When i shelve on test branch, update to default branch
-and unshelve i expect that it will not preserve previous
-test branch.
-
-  $ echo "xxx" > b
-  $ hg add b
-  $ hg shelve
-  shelved as test
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg update -r 7049e48789d7
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg unshelve
-  unshelving change 'test'
-  rebasing shelved changes
-  $ hg status
-  A b
-  $ hg branch
-  default
-  $ cd ..
-
-When i unshelve resulting in merge conflicts and makes saved
-file shelvedstate looks like in previous versions in
-mercurial(without restore branch information in 7th line) i
-expect that after resolving conflicts and successfully
-running 'shelve --continue' the branch information won't be
-restored and branch will be unchanged.
-
-shelve on new branch, conflict with previous shelvedstate
-
-  $ hg init conflict
-  $ cd conflict
-  $ echo "aaa" >> a
-  $ hg commit -A -m "a"
-  adding a
-  $ hg branch
-  default
-  $ hg branch test
-  marked working directory as branch test
-  (branches are permanent and global, did you want a bookmark?)
-  $ echo "bbb" >> a
-  $ hg status
-  M a
-  $ hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg branch
-  default
-  $ echo "ccc" >> a
-  $ hg status
-  M a
-  $ hg unshelve
-  unshelving change 'default'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a
-  warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-
-Removing restore branch information from shelvedstate file(making it looks like
-in previous versions) and running unshelve --continue
-
-  $ cp .hg/shelvedstate .hg/shelvedstate_old
-  $ cat .hg/shelvedstate_old | grep -v 'branchtorestore' > .hg/shelvedstate
-
-  $ echo "aaabbbccc" > a
-  $ rm a.orig
-  $ hg resolve --mark a
-  (no more unresolved files)
-  continue: hg unshelve --continue
-  $ hg unshelve --continue
-  unshelve of 'default' complete
-  $ cat a
-  aaabbbccc
-  $ hg status
-  M a
-  $ hg branch
-  default
-  $ cd ..
-
-On non bare shelve the branch information shouldn't be restored
-
-  $ hg init bare_shelve_on_new_branch
-  $ cd bare_shelve_on_new_branch
-  $ echo "aaa" >> a
-  $ hg commit -A -m "a"
-  adding a
-  $ hg branch
-  default
-  $ hg branch test
-  marked working directory as branch test
-  (branches are permanent and global, did you want a bookmark?)
-  $ echo "bbb" >> a
-  $ hg status
-  M a
-  $ hg shelve a
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg branch
-  test
-  $ hg branch default
-  marked working directory as branch default
-  (branches are permanent and global, did you want a bookmark?)
-  $ echo "bbb" >> b
-  $ hg status
-  ? b
-  $ hg unshelve
-  unshelving change 'default'
-  $ hg status
-  M a
-  ? b
-  $ hg branch
-  default
-  $ cd ..
-
-Prepare unshelve with a corrupted shelvedstate
-  $ hg init r1 && cd r1
-  $ echo text1 > file && hg add file
-  $ hg shelve
-  shelved as default
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo text2 > file && hg ci -Am text1
-  adding file
-  $ hg unshelve
-  unshelving change 'default'
-  rebasing shelved changes
-  merging file
-  warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-  $ echo somethingsomething > .hg/shelvedstate
-
-Unshelve --continue fails with appropriate message if shelvedstate is corrupted
-  $ hg unshelve --continue
-  abort: corrupted shelved state file
-  (please run hg unshelve --abort to abort unshelve operation)
-  [255]
-
-Unshelve --abort works with a corrupted shelvedstate
-  $ hg unshelve --abort
-  could not read shelved state file, your working copy may be in an unexpected state
-  please update to some commit
-
-Unshelve --abort fails with appropriate message if there's no unshelve in
-progress
-  $ hg unshelve --abort
-  abort: no unshelve in progress
-  [255]
-  $ cd ..
-
-Unshelve respects --keep even if user intervention is needed
-  $ hg init unshelvekeep && cd unshelvekeep
-  $ echo 1 > file && hg ci -Am 1
-  adding file
-  $ echo 2 >> file
-  $ hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ echo 3 >> file && hg ci -Am 13
-  $ hg shelve --list
-  default         (*s ago) * changes to: 1 (glob)
-  $ hg unshelve --keep
-  unshelving change 'default'
-  rebasing shelved changes
-  merging file
-  warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-  $ hg resolve --mark file
-  (no more unresolved files)
-  continue: hg unshelve --continue
-  $ hg unshelve --continue
-  unshelve of 'default' complete
-  $ hg shelve --list
-  default         (*s ago) * changes to: 1 (glob)
-  $ cd ..
-
-Unshelving when there are deleted files does not crash (issue4176)
-  $ hg init unshelve-deleted-file && cd unshelve-deleted-file
-  $ echo a > a && echo b > b && hg ci -Am ab
-  adding a
-  adding b
-  $ echo aa > a && hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ rm b
-  $ hg st
-  ! b
-  $ hg unshelve
-  unshelving change 'default'
-  $ hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ rm a && echo b > b
-  $ hg st
-  ! a
-  $ hg unshelve
-  unshelving change 'default'
-  abort: shelved change touches missing files
-  (run hg status to see which files are missing)
-  [255]
-  $ hg st
-  ! a
-  $ cd ..
-
-New versions of Mercurial know how to read onld shelvedstate files
-  $ hg init oldshelvedstate
-  $ cd oldshelvedstate
-  $ echo root > root && hg ci -Am root
-  adding root
-  $ echo 1 > a
-  $ hg add a
-  $ hg shelve --name ashelve
-  shelved as ashelve
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo 2 > a
-  $ hg ci -Am a
-  adding a
-  $ hg unshelve
-  unshelving change 'ashelve'
-  rebasing shelved changes
-  merging a
-  warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-putting v1 shelvedstate file in place of a created v2
-  $ cat << EOF > .hg/shelvedstate
-  > 1
-  > ashelve
-  > 8b058dae057a5a78f393f4535d9e363dd5efac9d
-  > 8b058dae057a5a78f393f4535d9e363dd5efac9d
-  > 8b058dae057a5a78f393f4535d9e363dd5efac9d f543b27db2cdb41737e2e0008dc524c471da1446
-  > f543b27db2cdb41737e2e0008dc524c471da1446
-  > 
-  > nokeep
-  > :no-active-bookmark
-  > EOF
-  $ echo 1 > a
-  $ hg resolve --mark a
-  (no more unresolved files)
-  continue: hg unshelve --continue
-mercurial does not crash
-  $ hg unshelve --continue
-  unshelve of 'ashelve' complete
-
-#if phasebased
-
-Unshelve with some metadata file missing
-----------------------------------------
-
-  $ hg shelve
-  shelved as default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ echo 3 > a
-
-Test with the `.shelve` missing, but the changeset still in the repo (non-natural case)
-
-  $ rm .hg/shelved/default.shelve
-  $ hg unshelve
-  unshelving change 'default'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a
-  warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-  $ hg unshelve --abort
-  unshelve of 'default' aborted
-
-Unshelve without .shelve metadata (can happen when upgrading a repository with old shelve)
-
-  $ cat .hg/shelved/default.shelve
-  node=82e0cb9893247d12667017593ce1e5655860f1ac
-  $ hg strip --hidden --rev 82e0cb989324 --no-backup
-  $ rm .hg/shelved/default.shelve
-  $ hg unshelve
-  unshelving change 'default'
-  temporarily committing pending changes (restore with 'hg unshelve --abort')
-  rebasing shelved changes
-  merging a
-  warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
-  [1]
-  $ cat .hg/shelved/default.shelve
-  node=82e0cb9893247d12667017593ce1e5655860f1ac
-  $ hg unshelve --abort
-  unshelve of 'default' aborted
-
-#endif
-
-  $ cd ..



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list