patchbomb: introduce a 'patchbomb.confirm' option
authorPierre-Yves David <pierre-yves.david@fb.com>
Tue, 02 Dec 2014 17:35:21 -0800
changeset 23488 11b215731e74
parent 23487 c14af817ab76
child 23489 fe4157d839ac
patchbomb: introduce a 'patchbomb.confirm' option When set to true, this option will make patchbomb always ask for confirmation before sending the email. Confirmation is a powerful way to prevent stupid mistakes when the sending patches. This should let me get rid of my global alias adding --confirm to hg email. I know that some people may get bitten when moving from a machine with confirm configured to a machine where it is not, but I think it is worth the risk.
hgext/patchbomb.py
tests/test-patchbomb.t
--- a/hgext/patchbomb.py	Tue Dec 02 17:24:52 2014 -0800
+++ b/hgext/patchbomb.py	Tue Dec 02 17:35:21 2014 -0800
@@ -52,6 +52,9 @@
   intro=auto   # include introduction message if more than 1 patch (default)
   intro=never  # never include an introduction message
   intro=always # always include an introduction message
+
+You can set patchbomb to always ask for confirmation by setting
+``patchbomb.confirm`` to true.
 '''
 
 import os, errno, socket, tempfile, cStringIO
@@ -430,9 +433,10 @@
     for each patchbomb message, so you can verify everything is alright.
 
     In case email sending fails, you will find a backup of your series
-    introductory message in ``.hg/last-email.txt``. The inclusion the
-    introduction can also be control using the ``patchbomb.intro`` option. (see
-    hg help patchbomb for details)
+    introductory message in ``.hg/last-email.txt``.
+
+    The default behavior of this command can be customized through
+    configuration. (See :hg:`help patchbomb` for details)
 
     Examples::
 
@@ -553,7 +557,10 @@
     bcc = getaddrs('Bcc') or []
     replyto = getaddrs('Reply-To')
 
-    if opts.get('diffstat') or opts.get('confirm'):
+    confirm = ui.configbool('patchbomb', 'confirm')
+    confirm |= bool(opts.get('diffstat') or opts.get('confirm'))
+
+    if confirm:
         ui.write(_('\nFinal summary:\n\n'), label='patchbomb.finalsummary')
         ui.write(('From: %s\n' % sender), label='patchbomb.from')
         for addr in showaddrs:
--- a/tests/test-patchbomb.t	Tue Dec 02 17:24:52 2014 -0800
+++ b/tests/test-patchbomb.t	Tue Dec 02 17:35:21 2014 -0800
@@ -86,6 +86,26 @@
   abort: patchbomb canceled
   [255]
 
+  $ hg --config ui.interactive=1 --config patchbomb.confirm=true email -n -f quux -t foo -c bar -r tip<<EOF
+  > n
+  > EOF
+  this patch series consists of 1 patches.
+  
+  
+  Final summary:
+  
+  From: quux
+  To: foo
+  Cc: bar
+  Subject: [PATCH] a
+   a |  1 +
+   1 files changed, 1 insertions(+), 0 deletions(-)
+  
+  are you sure you want to send (yn)? n
+  abort: patchbomb canceled
+  [255]
+
+
 Test diff.git is respected
   $ hg --config diff.git=True email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
   this patch series consists of 1 patches.