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(), diff --git a/tests/test-graft.t b/tests/test-graft.t --- a/tests/test-graft.t +++ b/tests/test-graft.t @@ -871,8 +871,7 @@ $ echo a > d && hg resolve -qm continue: hg graft --continue $ hg graft --continue - skipping ungraftable merge revision 6 - [255] + grafting 6:25a2b029d3ae "6" Continue testing same origin policy, using revision numbers from test above but do some destructive editing of the repo: