Patchwork D8749: absorb: make it explicit if empty changeset was created

login
register
mail settings
Submitter phabricator
Date July 14, 2020, 3:33 p.m.
Message ID <differential-rev-PHID-DREV-cbunr2xaw4fz5amvxt2w-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46735/
State Superseded
Headers show

Comments

phabricator - July 14, 2020, 3:33 p.m.
mjacob created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  If the config rewrite.empty-successor=skip is set, a message "became empty and
  was dropped" is shown if the changeset became empty. If the config
  rewrite.empty-successor=keep is set, absorb may create changesets even if they
  became empty. It’s probably a good idea to make that explicit. Therefore the
  message is changed to be a combination of both: "became empty and became ...".
  
  Repeating the word "became" is not very elegant. This results from the fact
  that "became" was and is overloaded to indicate both the change from non-empty
  to empty and the successor relation. In the combinated message, both meanings
  are used in one sentence.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8749

AFFECTED FILES
  hgext/absorb.py
  tests/test-absorb.t

CHANGE DETAILS




To: mjacob, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/test-absorb.t b/tests/test-absorb.t
--- a/tests/test-absorb.t
+++ b/tests/test-absorb.t
@@ -509,6 +509,7 @@ 
   $ hg commit -m b3
   $ echo 4 >> b
   $ hg commit -m b4
+  $ hg commit -m empty --config ui.allowemptycommit=True
   $ echo 1 > b
   $ echo 3 >> a
   $ hg absorb -pn
@@ -527,16 +528,19 @@ 
   1154859 b12
   bfafb49 a12
   $ hg absorb -av --config rewrite.empty-successor=keep | grep became
-  0:bfafb49242db: 1 file(s) changed, became 4:1a2de97fc652
-  1:115485984805: 2 file(s) changed, became 5:0c930dfab74c
-  2:30970dbf7b40: 2 file(s) changed, became 6:df6574ae635c
-  3:a393a58b9a85: 2 file(s) changed, became 7:ad4bd3462c9e
+  0:bfafb49242db: 1 file(s) changed, became 5:1a2de97fc652
+  1:115485984805: 2 file(s) changed, became 6:0c930dfab74c
+  2:30970dbf7b40: 2 file(s) changed, became empty and became 7:df6574ae635c
+  3:a393a58b9a85: 2 file(s) changed, became empty and became 8:ad4bd3462c9e
+  4:1bb0e8cff87a: 2 file(s) changed, became 9:2dbed75af996
   $ hg log -T '{rev} {desc}\n' -Gp
-  @  7 b4
+  @  9 empty
+  |
+  o  8 b4
   |
-  o  6 b3
+  o  7 b3
   |
-  o  5 b12
+  o  6 b12
   |  diff --git a/b b/b
   |  new file mode 100644
   |  --- /dev/null
@@ -544,7 +548,7 @@ 
   |  @@ -0,0 +1,1 @@
   |  +1
   |
-  o  4 a12
+  o  5 a12
      diff --git a/a b/a
      new file mode 100644
      --- /dev/null
diff --git a/hgext/absorb.py b/hgext/absorb.py
--- a/hgext/absorb.py
+++ b/hgext/absorb.py
@@ -783,11 +783,10 @@ 
                 # nothing changed, nothing commited
                 nextp1 = ctx
                 continue
-            if (
-                self.skip_empty_successor
-                and ctx.files()
-                and self._willbecomenoop(memworkingcopy, ctx, nextp1)
-            ):
+            willbecomenoop = ctx.files() and self._willbecomenoop(
+                memworkingcopy, ctx, nextp1
+            )
+            if self.skip_empty_successor and willbecomenoop:
                 # changeset is no longer necessary
                 self.replacemap[ctx.node()] = None
                 msg = _(b'became empty and was dropped')
@@ -798,7 +797,14 @@ 
                 nextp1 = lastcommitted
                 self.replacemap[ctx.node()] = lastcommitted.node()
                 if memworkingcopy:
-                    msg = _(b'%d file(s) changed, became %s') % (
+                    if willbecomenoop:
+                        msg = _(
+                            b'%d file(s) changed, became empty '
+                            b'and became %s'
+                        )
+                    else:
+                        msg = _(b'%d file(s) changed, became %s')
+                    msg = msg % (
                         len(memworkingcopy),
                         self._ctx2str(lastcommitted),
                     )