gitweb: Fix support for legacy gitweb config for snapshots
Earlier commit which cleaned up snapshot support and introduced support for multiple snapshot formats changed the format of $feature{'snapshot'}{'default'} (gitweb configuration) and gitweb.snapshot configuration variable (repository configuration). It supported old gitweb.snapshot values of 'gzip', 'bzip2' and 'zip' and tried to support, but failed to do that, old values of $feature{'snapshot'}{'default'}; at least those corresponding to old gitweb.snapshot values of 'gzip', 'bzip2' and 'zip', i.e. ['x-gzip', 'gz', 'gzip'] ['x-bzip2', 'bz2', 'bzip2'] ['x-zip', 'zip', ''] This commit moves legacy configuration support out of feature_snapshot subroutine to separate filter_snapshot_fmts subroutine. The filter_snapshot_fmts is used on result on result of gitweb_check_feature('snapshot'). This way feature_snapshot deals _only_ with repository config. As a byproduct you can now use 'gzip' and 'bzip2' as aliases to 'tgz' and 'tbz2' also in $feature{'snapshot'}{'default'}, not only in gitweb.snapshot. While at it do some whitespace cleanup: use tabs for indent, but spaces for align. Noticed-by: Matt McCutchen <hashproduct@gmail.com> Signed-off-by: Jakub Narebski <jnareb@gmail.com> Tested-by: Matt McCutchen <hashproduct@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
16a7fcfe5e
commit
a781785d8f
@ -307,10 +307,6 @@ sub feature_snapshot {
|
|||||||
|
|
||||||
if ($val) {
|
if ($val) {
|
||||||
@fmts = ($val eq 'none' ? () : split /\s*[,\s]\s*/, $val);
|
@fmts = ($val eq 'none' ? () : split /\s*[,\s]\s*/, $val);
|
||||||
@fmts = grep { defined } map {
|
|
||||||
exists $known_snapshot_format_aliases{$_} ?
|
|
||||||
$known_snapshot_format_aliases{$_} : $_ } @fmts;
|
|
||||||
@fmts = grep(exists $known_snapshot_formats{$_}, @fmts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return @fmts;
|
return @fmts;
|
||||||
@ -356,6 +352,18 @@ sub check_export_ok {
|
|||||||
(!$export_ok || -e "$dir/$export_ok"));
|
(!$export_ok || -e "$dir/$export_ok"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# process alternate names for backward compatibility
|
||||||
|
# filter out unsupported (unknown) snapshot formats
|
||||||
|
sub filter_snapshot_fmts {
|
||||||
|
my @fmts = @_;
|
||||||
|
|
||||||
|
@fmts = map {
|
||||||
|
exists $known_snapshot_format_aliases{$_} ?
|
||||||
|
$known_snapshot_format_aliases{$_} : $_} @fmts;
|
||||||
|
@fmts = grep(exists $known_snapshot_formats{$_}, @fmts);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++";
|
our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++";
|
||||||
do $GITWEB_CONFIG if -e $GITWEB_CONFIG;
|
do $GITWEB_CONFIG if -e $GITWEB_CONFIG;
|
||||||
|
|
||||||
@ -1299,9 +1307,11 @@ sub format_diff_line {
|
|||||||
sub format_snapshot_links {
|
sub format_snapshot_links {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
my @snapshot_fmts = gitweb_check_feature('snapshot');
|
my @snapshot_fmts = gitweb_check_feature('snapshot');
|
||||||
|
@snapshot_fmts = filter_snapshot_fmts(@snapshot_fmts);
|
||||||
my $num_fmts = @snapshot_fmts;
|
my $num_fmts = @snapshot_fmts;
|
||||||
if ($num_fmts > 1) {
|
if ($num_fmts > 1) {
|
||||||
# A parenthesized list of links bearing format names.
|
# A parenthesized list of links bearing format names.
|
||||||
|
# e.g. "snapshot (_tar.gz_ _zip_)"
|
||||||
return "snapshot (" . join(' ', map
|
return "snapshot (" . join(' ', map
|
||||||
$cgi->a({
|
$cgi->a({
|
||||||
-href => href(
|
-href => href(
|
||||||
@ -1313,8 +1323,10 @@ sub format_snapshot_links {
|
|||||||
, @snapshot_fmts) . ")";
|
, @snapshot_fmts) . ")";
|
||||||
} elsif ($num_fmts == 1) {
|
} elsif ($num_fmts == 1) {
|
||||||
# A single "snapshot" link whose tooltip bears the format name.
|
# A single "snapshot" link whose tooltip bears the format name.
|
||||||
|
# i.e. "_snapshot_"
|
||||||
my ($fmt) = @snapshot_fmts;
|
my ($fmt) = @snapshot_fmts;
|
||||||
return $cgi->a({
|
return
|
||||||
|
$cgi->a({
|
||||||
-href => href(
|
-href => href(
|
||||||
action=>"snapshot",
|
action=>"snapshot",
|
||||||
hash=>$hash,
|
hash=>$hash,
|
||||||
@ -4302,11 +4314,12 @@ sub git_tree {
|
|||||||
|
|
||||||
sub git_snapshot {
|
sub git_snapshot {
|
||||||
my @supported_fmts = gitweb_check_feature('snapshot');
|
my @supported_fmts = gitweb_check_feature('snapshot');
|
||||||
|
@supported_fmts = filter_snapshot_fmts(@supported_fmts);
|
||||||
|
|
||||||
my $format = $cgi->param('sf');
|
my $format = $cgi->param('sf');
|
||||||
unless ($format =~ m/[a-z0-9]+/
|
unless ($format =~ m/[a-z0-9]+/
|
||||||
&& exists($known_snapshot_formats{$format})
|
&& exists($known_snapshot_formats{$format})
|
||||||
&& grep($_ eq $format, @supported_fmts)) {
|
&& grep($_ eq $format, @supported_fmts)) {
|
||||||
die_error(undef, "Unsupported snapshot format");
|
die_error(undef, "Unsupported snapshot format");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user