[PATCH 3 of 3] histedit: add implicit base to default plan

timeless timeless at fmr.im
Tue May 3 12:12:54 EDT 2016


# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1462289414 0
#      Tue May 03 15:30:14 2016 +0000
# Node ID ea8e090238c4bad24784dfccdd679b2cd031acb7
# Parent  0a6112a63cbbf284ed71912b544d5ec7717a1279
# Available At bb://timeless/mercurial-crew
#              hg pull bb://timeless/mercurial-crew -r ea8e090238c4
histedit: add implicit base to default plan

With experimental.histeditng, there is a base command,
in order to faciliate its use, list the implicit base
in the default plan.

diff -r 0a6112a63cbb -r ea8e090238c4 hgext/histedit.py
--- a/hgext/histedit.py	Tue May 03 15:18:01 2016 +0000
+++ b/hgext/histedit.py	Tue May 03 15:30:14 2016 +0000
@@ -813,6 +813,23 @@
         basectx = self.repo['.']
         return basectx, []
 
+    @classmethod
+    def initialactions(cls, state, actions):
+        """insert the implicit base into the action list
+
+        Base lets one set the target for the next action.
+        It's helpful to know what that base is, in case you
+        are trying to split some commits to that base.
+        Also, by showing the action in the plan, it's easier
+        for users to understand how to use it."""
+        if not actions:
+            return actions
+        act = actions[0]
+        if not isinstance(act, pick):
+            return actions
+        act = cls(state, state.repo[act.node].parents()[0])
+        return [act] + actions
+
 @action(['_multifold'],
         _(
     """fold subclass used for when multiple folds happen in a row
@@ -1249,6 +1266,14 @@
     if not rules:
         comment = geteditcomment(ui, node.short(root), node.short(topmost))
         actions = [pick(state, r) for r in revs]
+        verbs = set()
+        for v in actiontable:
+            action = actiontable[v]
+            verb = action.verb
+            if verb in verbs:
+                continue
+            verbs.add(verb)
+            actions = action.initialactions(state, actions)
         rules = ruleeditor(repo, ui, actions, comment)
     else:
         rules = _readfile(rules)
diff -r 0a6112a63cbb -r ea8e090238c4 tests/test-histedit-base.t
--- a/tests/test-histedit-base.t	Tue May 03 15:18:01 2016 +0000
+++ b/tests/test-histedit-base.t	Tue May 03 15:30:14 2016 +0000
@@ -42,6 +42,7 @@
 Verify that implicit base command and help are listed
 
   $ HGEDITOR=cat hg histedit |grep base
+  base 24b6387c8c8c 5 F
   #  b, base = checkout changeset and apply further changesets from there
 
 Go to D


More information about the Mercurial-devel mailing list