gitweb: Show target of symbolic link in "tree" view
In "tree" view (git_print_tree_entry subroutine), for entries which are symbolic links, add " -> link_target" after file name (a la "ls -l"). Link target is _not_ hyperlinked. While at it, correct whitespaces (tabs are for aling, spaces are for indent) in modified git_print_tree_entry subroutine. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
9aa1757382
commit
e33fba4c5a
|
@ -1989,12 +1989,31 @@ sub git_print_log ($;%) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# return link target (what link points to)
|
||||||
|
sub git_get_link_target {
|
||||||
|
my $hash = shift;
|
||||||
|
my $link_target;
|
||||||
|
|
||||||
|
# read link
|
||||||
|
open my $fd, "-|", git_cmd(), "cat-file", "blob", $hash
|
||||||
|
or return;
|
||||||
|
{
|
||||||
|
local $/;
|
||||||
|
$link_target = <$fd>;
|
||||||
|
}
|
||||||
|
close $fd
|
||||||
|
or return;
|
||||||
|
|
||||||
|
return $link_target;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# print tree entry (row of git_tree), but without encompassing <tr> element
|
# print tree entry (row of git_tree), but without encompassing <tr> element
|
||||||
sub git_print_tree_entry {
|
sub git_print_tree_entry {
|
||||||
my ($t, $basedir, $hash_base, $have_blame) = @_;
|
my ($t, $basedir, $hash_base, $have_blame) = @_;
|
||||||
|
|
||||||
my %base_key = ();
|
my %base_key = ();
|
||||||
$base_key{hash_base} = $hash_base if defined $hash_base;
|
$base_key{'hash_base'} = $hash_base if defined $hash_base;
|
||||||
|
|
||||||
# The format of a table row is: mode list link. Where mode is
|
# The format of a table row is: mode list link. Where mode is
|
||||||
# the mode of the entry, list is the name of the entry, an href,
|
# the mode of the entry, list is the name of the entry, an href,
|
||||||
|
@ -2005,7 +2024,14 @@ sub git_print_tree_entry {
|
||||||
print "<td class=\"list\">" .
|
print "<td class=\"list\">" .
|
||||||
$cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
|
$cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
|
||||||
file_name=>"$basedir$t->{'name'}", %base_key),
|
file_name=>"$basedir$t->{'name'}", %base_key),
|
||||||
-class => "list"}, esc_path($t->{'name'})) . "</td>\n";
|
-class => "list"}, esc_path($t->{'name'}));
|
||||||
|
if (S_ISLNK(oct $t->{'mode'})) {
|
||||||
|
my $link_target = git_get_link_target($t->{'hash'});
|
||||||
|
if ($link_target) {
|
||||||
|
print " -> " . esc_path($link_target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "</td>\n";
|
||||||
print "<td class=\"link\">";
|
print "<td class=\"link\">";
|
||||||
print $cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
|
print $cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
|
||||||
file_name=>"$basedir$t->{'name'}", %base_key)},
|
file_name=>"$basedir$t->{'name'}", %base_key)},
|
||||||
|
|
Loading…
Reference in New Issue