absorb: make it explicit if empty changeset was created
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.
--- a/hgext/absorb.py Mon Jun 01 09:42:41 2020 +0200
+++ b/hgext/absorb.py Mon Jun 01 09:55:31 2020 +0200
@@ -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),
)
--- a/tests/test-absorb.t Mon Jun 01 09:42:41 2020 +0200
+++ b/tests/test-absorb.t Mon Jun 01 09:55:31 2020 +0200
@@ -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