[PATCH 1 of 5] rebase: extract final changesets cleanup logic in a dedicated function

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Sep 18 16:49:13 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1348001892 -7200
# Node ID c3b5278cc0e71e75df7776810a532b3f8cb28006
# Parent  ccd28eca37f67bcf534b016c0fd6b99140bc0632
rebase: extract final changesets cleanup logic in a dedicated function

At the end of the rebase, rebased changesets are currently stripped. This
behavior will be eventually dropped in favor of obsolescence marker creation.

The main rebase function is already big and branchy enough. This changeset move
the clean-up logic in a dedicated function before we make it more complex.

diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -310,15 +310,7 @@
                     nstate[repo[k].node()] = repo[v].node()
 
         if not keepf:
-            # Remove no more useful revisions
-            rebased = [rev for rev in state if state[rev] != nullmerge]
-            if rebased:
-                if set(repo.changelog.descendants([min(rebased)])) - set(state):
-                    ui.warn(_("warning: new changesets detected "
-                              "on source branch, not stripping\n"))
-                else:
-                    # backup the old csets by default
-                    repair.strip(ui, repo, repo[min(rebased)].node(), "all")
+            clearrebased(ui, repo, state)
 
         if currentbookmarks:
             updatebookmarks(repo, nstate, currentbookmarks, **opts)
@@ -664,6 +656,18 @@
         state.update(dict.fromkeys(detachset, nullmerge))
     return repo['.'].rev(), dest.rev(), state
 
+def clearrebased(ui, repo, state):
+    """dispose of rebased revision at the end of the rebase"""
+    rebased = [rev for rev in state if state[rev] != nullmerge]
+    if rebased:
+        if set(repo.changelog.descendants([min(rebased)])) - set(state):
+            ui.warn(_("warning: new changesets detected "
+                      "on source branch, not stripping\n"))
+        else:
+            # backup the old csets by default
+            repair.strip(ui, repo, repo[min(rebased)].node(), "all")
+
+
 def pullrebase(orig, ui, repo, *args, **opts):
     'Call rebase after pull if the latter has been invoked with --rebase'
     if opts.get('rebase'):


More information about the Mercurial-devel mailing list