# HG changeset patch # User Kostia Balytskyi # Date 2016-07-01 12:09:53 # Node ID 56641501adde6810c0c6c6154dc75287eb04878b # Parent e25da98052a4b9dd035f039765707d73f0e58990 rebase: make collapsing use explicit logic to decide on the rev to reuse This code: for rev in sortedstate: ... ... newnode = concludenode(repo, rev, p1, rbsrt.external, commitmsg=commitmsg, extrafn=extrafn, editor=editor, keepbranches=rbsrt.keepbranchesf, date=rbsrt.date) uses 'rev' variable in 'concludenode' function invocation. It is not explicitly assigned before, but its value comes as last value or 'rev' in a for loop, e.g. last element in a 'sortedstate'. IMO this a bad style and it also makes it hard to refactor the function, so it is better to explicitly define the value passed to 'concludenode'. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -499,10 +499,10 @@ def rebase(ui, repo, **opts): extrafn = _makeextrafn(rbsrt.extrafns) - sortedstate = sorted(rbsrt.state) - total = len(sortedstate) + rbsrt.sortedstate = sorted(rbsrt.state) + total = len(rbsrt.sortedstate) pos = 0 - for rev in sortedstate: + for rev in rbsrt.sortedstate: ctx = repo[rev] desc = '%d:%s "%s"' % (ctx.rev(), ctx, ctx.description().split('\n', 1)[0]) @@ -599,7 +599,8 @@ def rebase(ui, repo, **opts): commitmsg += '\n* %s' % repo[rebased].description() editopt = True editor = cmdutil.getcommiteditor(edit=editopt, editform=editform) - newnode = concludenode(repo, rev, p1, rbsrt.external, + revtoreuse = rbsrt.sortedstate[-1] + newnode = concludenode(repo, revtoreuse, p1, rbsrt.external, commitmsg=commitmsg, extrafn=extrafn, editor=editor, keepbranches=rbsrt.keepbranchesf,