gitweb: embed snapshot format parameter in PATH_INFO
When PATH_INFO is active, get rid of the sf CGI parameter by embedding the snapshot format information in the PATH_INFO URL, in the form of an appropriate extension. Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1ec2fb5fa3
commit
c752a0e00c
@ -811,6 +811,7 @@ sub href (%) {
|
||||
# - action
|
||||
# - hash_parent or hash_parent_base:/file_parent
|
||||
# - hash or hash_base:/filename
|
||||
# - the snapshot_format as an appropriate suffix
|
||||
|
||||
# When the script is the root DirectoryIndex for the domain,
|
||||
# $href here would be something like http://gitweb.example.com/
|
||||
@ -822,6 +823,10 @@ sub href (%) {
|
||||
$href .= "/".esc_url($params{'project'}) if defined $params{'project'};
|
||||
delete $params{'project'};
|
||||
|
||||
# since we destructively absorb parameters, we keep this
|
||||
# boolean that remembers if we're handling a snapshot
|
||||
my $is_snapshot = $params{'action'} eq 'snapshot';
|
||||
|
||||
# Summary just uses the project path URL, any other action is
|
||||
# added to the URL
|
||||
if (defined $params{'action'}) {
|
||||
@ -861,6 +866,18 @@ sub href (%) {
|
||||
$href .= esc_url($params{'hash'});
|
||||
delete $params{'hash'};
|
||||
}
|
||||
|
||||
# If the action was a snapshot, we can absorb the
|
||||
# snapshot_format parameter too
|
||||
if ($is_snapshot) {
|
||||
my $fmt = $params{'snapshot_format'};
|
||||
# snapshot_format should always be defined when href()
|
||||
# is called, but just in case some code forgets, we
|
||||
# fall back to the default
|
||||
$fmt ||= $snapshot_fmts[0];
|
||||
$href .= $known_snapshot_formats{$fmt}{'suffix'};
|
||||
delete $params{'snapshot_format'};
|
||||
}
|
||||
}
|
||||
|
||||
# now encode the parameters explicitly
|
||||
|
Loading…
Reference in New Issue
Block a user