[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