D6694: unshelve: fix bug on a partial unshelve with --continue
navaneeth.suresh (Navaneeth Suresh)
phabricator at mercurial-scm.org
Thu Jul 25 16:33:33 UTC 2019
navaneeth.suresh created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
`unshelve --continue` after a partial unshelve was not working
before. This patch makes that to work.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6694
AFFECTED FILES
mercurial/shelve.py
tests/test-shelve.t
CHANGE DETAILS
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 <<EOF
+ > 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
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:
To: navaneeth.suresh, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list