Mercurial > public > mercurial-scm > hg-stable
diff hgext/histedit.py @ 19017:c5c8613f265e
histedit: properly handle --continue on empty fold
When all changes from the fold have been dropped, the --continue code was
confused. This changeset handles this case.
The test for this case existed but was broken.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Tue, 16 Apr 2013 16:58:25 +0200 |
parents | 0023a6e49268 |
children | 730614b9b352 |
line wrap: on
line diff
--- a/hgext/histedit.py Tue Apr 16 20:50:17 2013 +0200 +++ b/hgext/histedit.py Tue Apr 16 16:58:25 2013 +0200 @@ -618,14 +618,20 @@ replacements.append((ctx.node(), tuple(newchildren))) if action in ('f', 'fold'): - # finalize fold operation if applicable - if new is None: - new = newchildren[-1] + if newchildren: + # finalize fold operation if applicable + if new is None: + new = newchildren[-1] + else: + newchildren.pop() # remove new from internal changes + parentctx, repl = finishfold(ui, repo, parentctx, ctx, new, opts, + newchildren) + replacements.extend(repl) else: - newchildren.pop() # remove new from internal changes - parentctx, repl = finishfold(ui, repo, parentctx, ctx, new, opts, - newchildren) - replacements.extend(repl) + # newchildren is empty if the fold did not result in any commit + # this happen when all folded change are discarded during the + # merge. + replacements.append((ctx.node(), (parentctx.node(),))) elif newchildren: # otherwise update "parentctx" before proceeding to further operation parentctx = repo[newchildren[-1]]