[PATCH 2 of 2 V3] commitextras: check the format of the arguments and no internal key is used

Yuya Nishihara yuya at tcha.org
Mon Jul 17 10:56:40 EDT 2017


On Sat, 15 Jul 2017 01:31:24 +0530, Pulkit Goyal wrote:
> # HG changeset patch
> # User Pulkit Goyal <7895pulkit at gmail.com>
> # Date 1499856010 -19800
> #      Wed Jul 12 16:10:10 2017 +0530
> # Node ID 2cbccf36af1bd0d9ae9df1ad5fd4a7f8d870ae6c
> # Parent  e51d188da49636884ae6c0df94f501e84436b857
> # EXP-Topic fbext
> commitextras: check the format of the arguments and no internal key is used

> +usedinternally = set(['amend_source', 'branch', 'histedit_source', 'topic',
> +                    'rebase_source', 'intermediate-source', '__touch-noise__',
> +                    'source', 'transplant_source'])

Updated to a set literal. I found one more internal key, 'close', so added it
in flight.

>  def extsetup(ui):
>      entry = extensions.wrapcommand(commands.table, 'commit', _commit)
>      options = entry[1]
> @@ -33,7 +38,15 @@
>              extras = opts.get('extra')
>              if extras:
>                  for raw in extras:
> +                    if '=' not in raw:
> +                        msg = _("unable to parse '%s', should follow "
> +                                "KEY=VALUE format")
> +                        raise error.Abort(msg % raw)
>                      k, v = raw.split('=', 1)
> +                    if k in usedinternally:
> +                        msg = _("key '%s' is used internally, can't be set "
> +                                "manually")
> +                        raise error.Abort(msg % k)

Perhaps it's better to restrict k to non-empty ASCII word.


More information about the Mercurial-devel mailing list