gitweb: choose appropriate view for file type if a= parameter missing
gitweb URLs use the a= parameter for the view to use on the given path, such as "blob" or "tree". Currently, if a gitweb URL omits the a= parameter, gitweb just shows the top-level repository summary, regardless of the path given. gitweb could instead choose an appropriate view based on the file type: blob for blobs (files), tree for trees (directories), and summary if no path given (the URL included no f= parameter, or an empty f= parameter). Apart from making gitweb more robust and supporting URL editing more easily, this change would aid the creation of shortcuts to git repositories using simple substitution, such as: http://example.org/git/?p=path/to/repo.git;hb=HEAD;f=%s With this patch, if given the hash through the h= parameter, or the hash base (hb=) and a filename (f=), gitweb uses cat-file -t to automatically set the a= parameter. This feature was requested by Josh Triplett through http://bugs.debian.org/410465 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
7b6e0eb3c3
commit
7f9778b19b
@ -458,10 +458,16 @@ my %actions = (
|
||||
"project_index" => \&git_project_index,
|
||||
);
|
||||
|
||||
if (defined $project) {
|
||||
$action ||= 'summary';
|
||||
} else {
|
||||
$action ||= 'project_list';
|
||||
if (!defined $action) {
|
||||
if (defined $hash) {
|
||||
$action = git_get_type($hash);
|
||||
} elsif (defined $hash_base && defined $file_name) {
|
||||
$action = git_get_type("$hash_base:$file_name");
|
||||
} elsif (defined $project) {
|
||||
$action = 'summary';
|
||||
} else {
|
||||
$action = 'project_list';
|
||||
}
|
||||
}
|
||||
if (!defined($actions{$action})) {
|
||||
die_error(undef, "Unknown action");
|
||||
|
Loading…
Reference in New Issue
Block a user