From: Kyle Meyer Date: Fri, 21 May 2021 04:38:16 +0000 (-0400) Subject: lei rediff: fix construction of git-diff options X-Git-Tag: v1.7.0~659 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=3c1d0da4d0608b5a87371e602a911964d7c1498c lei rediff: fix construction of git-diff options When generating git-diff options, lei-rediff extracts the single character option from the lei option spec. However, there's no check that the regular expression actually matches, leading to an unintentional git-diff option when there isn't a short option (e.g., --inter-hunk-context=1 maps to the invalid `git diff --color -w1'). Check for a match before trying to extract the single character option. Fixes: cf0c7ce3ce81b5c3 (lei rediff: regenerate diffs from stdin) --- diff --git a/lib/PublicInbox/LeiRediff.pm b/lib/PublicInbox/LeiRediff.pm index 3c8ebe41..2e793df5 100644 --- a/lib/PublicInbox/LeiRediff.pm +++ b/lib/PublicInbox/LeiRediff.pm @@ -108,8 +108,9 @@ EOM push @cmd, '--'.($opt->{color} && !$opt->{'no-color'} ? '' : 'no-'). 'color'; for my $o (@PublicInbox::LEI::diff_opt) { - $o =~ s/\|([a-z0-9])\b//i; # remove single char short option - my $c = $1; + my $c = ''; + # remove single char short option + $o =~ s/\|([a-z0-9])\b//i and $c = $1; if ($o =~ s/=[is]@\z//) { my $v = $opt->{$o} or next; push @cmd, map { $c ? "-$c$_" : "--$o=$_" } @$v;