Mercurial > hg-stable
diff mercurial/commands.py @ 44785:e5043679bfcc stable
graft-state: save --base in graft's state, fixing bug with graft --continue
Without this change, running graft --continue after grafting a merge commit using --base
(and encountering conflicts) will output "skipping ungraftable merge revision" even though
we specified a base in the initial graft command.
Graft's improve behaviour is reflected in test-graft.t.
Differential Revision: https://phab.mercurial-scm.org/D8578
author | Charles Chamberlain <cchamberlain@janestreet.com> |
---|---|
date | Tue, 26 May 2020 11:14:07 -0400 |
parents | 16c361152133 |
children | 2dc5ae953c4a |
line wrap: on
line diff
--- a/mercurial/commands.py Fri May 15 00:53:37 2020 +0200 +++ b/mercurial/commands.py Tue May 26 11:14:07 2020 -0400 @@ -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(),