changeset 42273:0f01394457a0

commit: add ability to print file status after each successful invocation When commands.commit.post-status is enabled, `hg commit` will effectively run `hg status -mardu` after committing. It can help catch mistakes like not committing all needed files or not adding unknown files that should've been part of the just created commit.
author Anton Shestakov <av6@dwimlabs.net>
date Fri, 03 May 2019 14:11:16 +0800
parents 165b1aad43da
children d26bfbf419f9
files mercurial/commands.py mercurial/configitems.py mercurial/help/config.txt tests/test-commit.t
diffstat 4 files changed, 50 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Fri May 03 14:07:14 2019 +0800
+++ b/mercurial/commands.py	Fri May 03 14:11:16 2019 +0800
@@ -1735,6 +1735,10 @@
 
     cmdutil.commitstatus(repo, node, branch, bheads, opts)
 
+    if not ui.quiet and ui.configbool('commands', 'commit.post-status'):
+        status(ui, repo, modified=True, added=True, removed=True, deleted=True,
+               unknown=True, subrepos=opts.get('subrepos'))
+
 @command('config|showconfig|debugconfig',
     [('u', 'untrusted', None, _('show untrusted configuration options')),
      ('e', 'edit', None, _('edit user config')),
--- a/mercurial/configitems.py	Fri May 03 14:07:14 2019 +0800
+++ b/mercurial/configitems.py	Fri May 03 14:11:16 2019 +0800
@@ -202,6 +202,9 @@
     default=dynamicdefault,
 )
 _registerdiffopts(section='commands', configprefix='commit.interactive.')
+coreconfigitem('commands', 'commit.post-status',
+    default=False,
+)
 coreconfigitem('commands', 'grep.all-files',
     default=False,
 )
--- a/mercurial/help/config.txt	Fri May 03 14:07:14 2019 +0800
+++ b/mercurial/help/config.txt	Fri May 03 14:11:16 2019 +0800
@@ -438,6 +438,10 @@
 ``commands``
 ------------
 
+``commit.post-status``
+    Show status of files in the working directory after successful commit.
+    (default: False)
+
 ``resolve.confirm``
     Confirm before performing action if no filename is passed.
     (default: False)
--- a/tests/test-commit.t	Fri May 03 14:07:14 2019 +0800
+++ b/tests/test-commit.t	Fri May 03 14:11:16 2019 +0800
@@ -838,3 +838,42 @@
   second line
 
   $ cd ..
+
+testing commands.commit.post-status config option
+
+  $ hg init ci-post-st
+  $ cd ci-post-st
+  $ echo '[commands]' > .hg/hgrc
+  $ echo 'commit.post-status = 1' >> .hg/hgrc
+
+  $ echo 'ignored-file' > .hgignore
+  $ hg ci -qAm 0
+
+  $ echo 'c' > clean-file
+  $ echo 'a' > added-file
+  $ echo '?' > unknown-file
+  $ echo 'i' > ignored-file
+  $ hg add clean-file added-file
+  $ hg ci -m 1 clean-file
+  A added-file
+  ? unknown-file
+  $ hg st -mardu
+  A added-file
+  ? unknown-file
+
+  $ touch modified-file
+  $ hg add modified-file
+  $ hg ci -m 2 modified-file -q
+
+  $ echo 'm' > modified-file
+  $ hg ci --amend -m 'reworded' -X 're:'
+  saved backup bundle to $TESTTMP/ci-post-st/.hg/strip-backup/*-amend.hg (glob)
+  M modified-file
+  A added-file
+  ? unknown-file
+  $ hg st -mardu
+  M modified-file
+  A added-file
+  ? unknown-file
+
+  $ cd ..