Subject: Re: [PATCH] t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

From: Junio C Hamano <[email-masked]>
Date: Sun, 01 Feb 2015 17:33:55 -0800

"Kyle J. McKay" <[email-masked]> writes:

>> use 5.008;
>
> So either that needs to change or the code should properly deal with  
> the version of Getopt::Long that comes with 5.8.0.
>
> Since it's really not very difficult or invasive to add support for  
> the no- variants, here's a patch to do so:

Doesn't that approach add "what does --no-no-chain-rely-to even
mean?" confusion to the resulting system?  If that is not the case,
then I am all for it, but otherwise, let's not.

People can easily spell --noxmailer if they want to stay at an older
Getopt::Long, and over time these ancient ones will be upgraded
away.

> -- 8< --
> Subject: [PATCH] git-send-email.perl: support no- prefix with older GetOptions
>
> Only Perl version 5.8.0 or later is required, but that comes with
> an older Getopt::Long (2.32) that does not support the 'no-'
> prefix.  Support for that was added in Getopt::Long version 2.33.
>
> Since the help only mentions the 'no-' prefix and not the 'no'
> prefix, add explicit support for the 'no-' prefix when running
> with older GetOptions versions.
>
> Reported-by: Tom G. Christensen <[email-masked]>
> Signed-off-by: Kyle J. McKay <[email-masked]>
> ---
>  git-send-email.perl | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 3092ab35..a18a7959 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -299,6 +299,7 @@ my $rc = GetOptions("h" => \$help,
>  		    "bcc=s" => \@bcclist,
>  		    "no-bcc" => \$no_bcc,
>  		    "chain-reply-to!" => \$chain_reply_to,
> +		    "no-chain-reply-to" => sub {$chain_reply_to = 0},
>  		    "smtp-server=s" => \$smtp_server,
>  		    "smtp-server-option=s" => \@smtp_server_options,
>  		    "smtp-server-port=s" => \$smtp_server_port,
> @@ -311,25 +312,34 @@ my $rc = GetOptions("h" => \$help,
>  		    "smtp-domain:s" => \$smtp_domain,
>  		    "identity=s" => \$identity,
>  		    "annotate!" => \$annotate,
> +		    "no-annotate" => sub {$annotate = 0},
>  		    "compose" => \$compose,
>  		    "quiet" => \$quiet,
>  		    "cc-cmd=s" => \$cc_cmd,
>  		    "suppress-from!" => \$suppress_from,
> +		    "no-suppress-from" => sub {$suppress_from = 0},
>  		    "suppress-cc=s" => \@suppress_cc,
>  		    "signed-off-cc|signed-off-by-cc!" => \$signed_off_by_cc,
> +		    "no-signed-off-cc|no-signed-off-by-cc" => sub {$signed_off_by_cc = 0},
>  		    "cc-cover|cc-cover!" => \$cover_cc,
> +		    "no-cc-cover" => sub {$cover_cc = 0},
>  		    "to-cover|to-cover!" => \$cover_to,
> +		    "no-to-cover" => sub {$cover_to = 0},
>  		    "confirm=s" => \$confirm,
>  		    "dry-run" => \$dry_run,
>  		    "envelope-sender=s" => \$envelope_sender,
>  		    "thread!" => \$thread,
> +		    "no-thread" => sub {$thread = 0},
>  		    "validate!" => \$validate,
> +		    "no-validate" => sub {$validate = 0},
>  		    "transfer-encoding=s" => \$target_xfer_encoding,
>  		    "format-patch!" => \$format_patch,
> +		    "no-format-patch" => sub {$format_patch = 0},
>  		    "8bit-encoding=s" => \$auto_8bit_encoding,
>  		    "compose-encoding=s" => \$compose_encoding,
>  		    "force" => \$force,
>  		    "xmailer!" => \$use_xmailer,
> +		    "no-xmailer" => sub {$use_xmailer = 0},
>  	 );
>  
>  usage() if $help;
> --