diff --git a/mercurial/shelve.py b/mercurial/shelve.py --- a/mercurial/shelve.py +++ b/mercurial/shelve.py @@ -753,6 +753,15 @@ topic='shelve') shelvedstate.clear(repo) unshelvecleanup(ui, repo, state.name, opts) + else: + # This is tricky. The function call might seems to be not useful. + # But, we do update state.parents here. Otherwise, checkparents() + # will fail. + shelvedstate.save(repo, basename, shelvectx.p1(), + state.pendingctx, state.nodestoremove, + state.branchtorestore, state.keep, + state.activebookmark, + interactive) _restoreactivebookmark(repo, state.activebookmark) ui.status(_("unshelve of '%s' complete\n") % state.name) @@ -812,6 +821,12 @@ bool to know whether the shelve is partly done or completely done. """ opts['message'] = shelvectx.description() + if not opts['message']: + # On doing a parial unshelve with --continue interactive, the commit + # description is empty. To avoid aborting on that, we set a commit + # message. + opts['message'] = ('changes to: %s' % + shelvectx.p1().description().split('\n', 1)[0]) opts['interactive-unshelve'] = True pats = [] if not interactive: diff --git a/tests/test-shelve.t b/tests/test-shelve.t --- a/tests/test-shelve.t +++ b/tests/test-shelve.t @@ -1355,7 +1355,7 @@ > y > y > y - > y + > n > EOF diff --git a/bar1 b/bar1 1 hunks, 1 lines changed @@ -1379,6 +1379,23 @@ +B C record change 2/2 to 'bar2'? + (enter ? for help) [Ynesfdaq?] n + + unshelve of 'default-01' complete + $ hg unshelve --continue < y + > y + > 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 this change to 'bar1'? (enter ? for help) [Ynesfdaq?] y unshelve of 'default-01' complete