[Updated] D8578: graft-state: save --base in graft's state, fixing bug with graft --continue

charlesetc (Charles Chamberlain) phabricator at mercurial-scm.org
Tue May 26 15:15:54 UTC 2020


charlesetc edited the summary of this revision.
charlesetc updated this revision to Diff 21474.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D8578?vs=21465&id=21474

BRANCH
  stable

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D8578/new/

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

AFFECTED FILES
  mercurial/commands.py
  tests/test-graft.t

CHANGE DETAILS

diff --git a/tests/test-graft.t b/tests/test-graft.t
--- a/tests/test-graft.t
+++ b/tests/test-graft.t
@@ -853,6 +853,26 @@
   $ cat a
   abc
 
+graft --continue after --base with conflits
+
+  $ echo base > d
+  $ hg ci -m _
+  $ hg graft -r 6
+  skipping ungraftable merge revision 6
+  [255]
+  $ hg graft -r 6 --base 5
+  grafting 6:25a2b029d3ae "6"
+  merging d
+  merging e
+  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+  abort: unresolved conflicts, can't continue
+  (use 'hg resolve' and 'hg graft --continue')
+  [1]
+  $ echo a > d && hg resolve -qm
+  continue: hg graft --continue
+  $ hg graft --continue
+  grafting 6:25a2b029d3ae "6"
+
 Continue testing same origin policy, using revision numbers from test above
 but do some destructive editing of the repo:
 
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2969,9 +2969,6 @@
 
     revs = list(revs)
     revs.extend(opts.get(b'rev'))
-    basectx = None
-    if opts.get(b'base'):
-        basectx = scmutil.revsingle(repo, opts[b'base'], None)
     # a dict of data to be stored in state file
     statedata = {}
     # list of new nodes created by ongoing graft
@@ -3061,6 +3058,8 @@
                 opts[b'log'] = True
             if statedata.get(b'no_commit'):
                 opts[b'no_commit'] = statedata.get(b'no_commit')
+            if statedata.get(b'base'):
+                opts[b'base'] = statedata.get(b'base')
             nodes = statedata[b'nodes']
             revs = [repo[node].rev() for node in nodes]
         else:
@@ -3073,6 +3072,9 @@
         revs = scmutil.revrange(repo, revs)
 
     skipped = set()
+    basectx = None
+    if opts.get(b'base'):
+        basectx = scmutil.revsingle(repo, opts[b'base'], None)
     if basectx is None:
         # check for merges
         for rev in repo.revs(b'%ld and merge()', revs):
@@ -3165,6 +3167,8 @@
 
     if opts.get(b'no_commit'):
         statedata[b'no_commit'] = True
+    if opts.get(b'base'):
+        statedata[b'base'] = True
     for pos, ctx in enumerate(repo.set(b"%ld", revs)):
         desc = b'%d:%s "%s"' % (
             ctx.rev(),



To: charlesetc, #hg-reviewers, marmoute
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20200526/12b716ea/attachment-0002.html>


More information about the Mercurial-patches mailing list