gitweb: Simplify 'opt' parameter validation, add "no merges" feeds
Simplify and make more readable validation of 'opt' (extra options)
parameter, using exists($hash{key}) instead of grepping keys of a hash
for value.
Move 'opt' parameter to be the last (for now) in the URL.
Make use of '--no-merges' extra option ('opt') by adding "no merges"
RSS and Atom feeds to the HTML header. Note that alternate format
links in the RSS and Atom views do not use '--no-merges' option yet!
Adds tests for the 'opt' parameter to t9500-gitweb-standalone-no-errors.sh
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
01ac1e38db
commit
12075103dd
@ -436,12 +436,11 @@ my %allowed_options = (
|
||||
|
||||
our @extra_options = $cgi->param('opt');
|
||||
if (defined @extra_options) {
|
||||
foreach(@extra_options)
|
||||
{
|
||||
if (not grep(/^$_$/, keys %allowed_options)) {
|
||||
foreach my $opt (@extra_options) {
|
||||
if (not exists $allowed_options{$opt}) {
|
||||
die_error(undef, "Invalid option parameter");
|
||||
}
|
||||
if (not grep(/^$action$/, @{$allowed_options{$_}})) {
|
||||
if (not grep(/^$action$/, @{$allowed_options{$opt}})) {
|
||||
die_error(undef, "Invalid option parameter for this action");
|
||||
}
|
||||
}
|
||||
@ -598,7 +597,6 @@ sub href(%) {
|
||||
action => "a",
|
||||
file_name => "f",
|
||||
file_parent => "fp",
|
||||
extra_options => "opt",
|
||||
hash => "h",
|
||||
hash_parent => "hp",
|
||||
hash_base => "hb",
|
||||
@ -608,6 +606,7 @@ sub href(%) {
|
||||
searchtext => "s",
|
||||
searchtype => "st",
|
||||
snapshot_format => "sf",
|
||||
extra_options => "opt",
|
||||
);
|
||||
my %mapping = @mapping;
|
||||
|
||||
@ -2285,9 +2284,17 @@ EOF
|
||||
printf('<link rel="alternate" title="%s log RSS feed" '.
|
||||
'href="%s" type="application/rss+xml" />'."\n",
|
||||
esc_param($project), href(action=>"rss"));
|
||||
printf('<link rel="alternate" title="%s log RSS feed (no merges)" '.
|
||||
'href="%s" type="application/rss+xml" />'."\n",
|
||||
esc_param($project), href(action=>"rss",
|
||||
extra_options=>"--no-merges"));
|
||||
printf('<link rel="alternate" title="%s log Atom feed" '.
|
||||
'href="%s" type="application/atom+xml" />'."\n",
|
||||
esc_param($project), href(action=>"atom"));
|
||||
printf('<link rel="alternate" title="%s log Atom feed (no merges)" '.
|
||||
'href="%s" type="application/atom+xml" />'."\n",
|
||||
esc_param($project), href(action=>"atom",
|
||||
extra_options=>"--no-merges"));
|
||||
} else {
|
||||
printf('<link rel="alternate" title="%s projects list" '.
|
||||
'href="%s" type="text/plain; charset=utf-8"/>'."\n",
|
||||
|
||||
Reference in New Issue
Block a user