[PATCH 3 of 3] patchbomb: introduce a 'patchwork.confirm' option

Ryan McElroy rm at fb.com
Tue Dec 2 23:06:38 CST 2014


I like the idea of this patchset and it seems pretty straightforward. I would certainly use this to help myself from spamming the list with bad patches!

> -----Original Message-----
> From: Mercurial-devel [mailto:mercurial-devel-bounces at selenic.com] On
> Behalf Of Pierre-Yves David
> Sent: Tuesday, December 2, 2014 7:12 PM
> To: mercurial-devel at selenic.com
> Cc: Pierre-Yves David
> Subject: [PATCH 3 of 3] patchbomb: introduce a 'patchwork.confirm' option
> 
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com> # Date 1417570521
> 28800
> #      Tue Dec 02 17:35:21 2014 -0800
> # Node ID 20e66de4913566197f0066f5835086c844deb401
> # Parent  d943db1f1f572bf3c01b8ca6b5e728ebc30649aa
> patchbomb: introduce a 'patchwork.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 mistake when the sending patches.
> 
> This should let me get ride 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 machine where it is not. But I think it is still worth the
> risk.
> 
> diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py
> --- a/hgext/patchbomb.py
> +++ b/hgext/patchbomb.py
> @@ -50,10 +50,13 @@ overwritten by command line flags like -
> 
>    [patchbomb]
>    intro=auto   # include introduction message if more than 1 patch (default)
>    intro=never  # never included 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  import email  # On python2.4
> you have to import these by name or they fail to @@ -428,13 +431,14 @@
> def patchbomb(ui, repo, *revs, **opts):
>      Then when all is done, patchbomb messages are displayed. If the
>      PAGER environment variable is set, your pager will be fired up once
>      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::
> 
>        hg email -r 3000          # send patch 3000 only
>        hg email -r 3000 -r 3001  # send patches 3000 and 3001 @@ -551,11
> +555,14 @@ def patchbomb(ui, repo, *revs, **opts):
>          raise util.Abort(_('no recipient addresses provided'))
>      cc = getaddrs('Cc', ask=True, default='') or []
>      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:
>              ui.write('%s\n' % addr, label='patchbomb.to')
>          for m, subj, ds in msgs:
> diff --git a/tests/test-patchbomb.t b/tests/test-patchbomb.t
> --- a/tests/test-patchbomb.t
> +++ b/tests/test-patchbomb.t
> @@ -84,10 +84,30 @@ Mercurial-patchbomb/.* -> Mercurial-patc
> 
>    are you sure you want to send (yn)? n
>    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.
> 
> 
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list