[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