[PATCH 3 of 3] patchbomb: introduce a 'patchwork.confirm' option
Augie Fackler
raf at durin42.com
Fri Dec 5 14:51:54 CST 2014
On Tue, Dec 02, 2014 at 07:12:06PM -0800, Pierre-Yves David wrote:
> # 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
Queued these, thanks.
>
> 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