[PATCH 18 of 23 v2] rebase: make collapsing use explicit logic to decide on the rev to reuse

Kostia Balytskyi ikostia at fb.com
Tue May 31 19:23:38 EDT 2016


# HG changeset patch
# User Kostia Balytskyi <ikostia at fb.com>
# Date 1464609743 -3600
#      Mon May 30 13:02:23 2016 +0100
# Node ID feb91eb296574c4ae4011fb6ae4470276f102132
# Parent  a0abe6bc4915d60f82fe3b0cddca09ecfe054934
rebase: make collapsing use explicit logic to decide on the rev to reuse

This code:

    for rev in sortedstate:
        ...
    ...
    newnode = concludenode(repo, rev, p1, rtstate.external,
                           commitmsg=commitmsg,
                           extrafn=extrafn, editor=editor,
                           keepbranches=rtstate.keepbranchesf,
                           date=rtstate.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
@@ -503,10 +503,10 @@
 
         extrafn = _makeextrafn(rtstate.extrafns)
 
-        sortedstate = sorted(rtstate.state)
-        total = len(sortedstate)
+        rtstate.sortedstate = sorted(rtstate.state)
+        total = len(rtstate.sortedstate)
         pos = 0
-        for rev in sortedstate:
+        for rev in rtstate.sortedstate:
             ctx = repo[rev]
             desc = '%d:%s "%s"' % (ctx.rev(), ctx,
                                    ctx.description().split('\n', 1)[0])
@@ -603,7 +603,8 @@
                         commitmsg += '\n* %s' % repo[rebased].description()
                 editopt = True
             editor = cmdutil.getcommiteditor(edit=editopt, editform=editform)
-            newnode = concludenode(repo, rev, p1, rtstate.external,
+            revtoreuse = rtstate.sortedstate[-1]
+            newnode = concludenode(repo, revtoreuse, p1, rtstate.external,
                                    commitmsg=commitmsg,
                                    extrafn=extrafn, editor=editor,
                                    keepbranches=rtstate.keepbranchesf,


More information about the Mercurial-devel mailing list