Skip to content

Commit

Permalink
gitweb: Improve behavior for actionless path_info gitweb URLs
Browse files Browse the repository at this point in the history
Eli Barzilay noticed that

  http://server/gitweb/project/<commit-sha1>

link goes to 'shortlog' view, while 'commit' view would be more
useful, but that 'shortlog' action is more apropriate for

  http://server/gitweb/project/<commit-sha1>..<other-commit-sha1>

links.

Therefore for the case when we don't have either action, or filename,
or parent hash [base] in path_info-based URL, i.e. for

  http://server/gitweb/project/<object-id>

link, instead of using 'shortlog' view we allow dispatch() subroutine
to detect type of object and use appropriate action (in most case it
would be either 'commit' action, or 'tag', or 'tree' for top
directory).

Requested-by: Eli Barzilay <eli@barzilay.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Tested-by: Eli Barzilay <eli@barzilay.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jakub Narebski authored and Junio C Hamano committed Oct 13, 2010
1 parent 7e00dc5 commit d0af373
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions gitweb/gitweb.perl
Original file line number Diff line number Diff line change
Expand Up @@ -819,8 +819,15 @@ sub evaluate_path_info {
# hash_base instead. It should also be noted that hand-crafted
# links having 'history' as an action and no pathname or hash
# set will fail, but that happens regardless of PATH_INFO.
$input_params{'action'} ||= "shortlog";
if (grep { $_ eq $input_params{'action'} } @wants_base) {
if (defined $parentrefname) {
# if there is parent let the default be 'shortlog' action
# (for http://git.example.com/repo.git/A..B links); if there
# is no parent, dispatch will detect type of object and set
# action appropriately if required (if action is not set)
$input_params{'action'} ||= "shortlog";
}
if ($input_params{'action'} &&
grep { $_ eq $input_params{'action'} } @wants_base) {
$input_params{'hash_base'} ||= $refname;
} else {
$input_params{'hash'} ||= $refname;
Expand Down

0 comments on commit d0af373

Please sign in to comment.