# HG changeset patch # User Pierre-Yves David # Date 1366124305 -7200 # Node ID c5c8613f265e563361640b2ab2ee4d6d77429d4e # Parent 27ec54f2946e918694ee33741d9ba840fd3875a9 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. diff -r 27ec54f2946e -r c5c8613f265e hgext/histedit.py --- 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]] diff -r 27ec54f2946e -r c5c8613f265e tests/test-histedit-fold.t --- a/tests/test-histedit-fold.t Tue Apr 16 20:50:17 2013 +0200 +++ b/tests/test-histedit-fold.t Tue Apr 16 16:58:25 2013 +0200 @@ -141,7 +141,7 @@ $ cat > $EDITED < pick 617f94f13c0f 1 +4 > drop 888f9082bf99 2 +5 - > pick 251d831eeec5 3 +6 + > fold 251d831eeec5 3 +6 > EOF $ HGEDITOR="cat \"$EDITED\" > " hg histedit 1