gitweb: remotes view for a single remote

When 'remotes' view is passed the 'hash' parameter, interpret it as the
name of a remote and limit the view the the heads of that remote.

In single-remote view we let the user switch easily to the default
remotes view by specifying an -action_extra for the page header and by
enabling the 'remotes' link in the reference navigation submenu.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Giuseppe Bilotta 2010-11-11 13:26:14 +01:00 коммит произвёл Junio C Hamano
Родитель c7d94cdbe7
Коммит bb60776063
1 изменённых файлов: 26 добавлений и 4 удалений

Просмотреть файл

@ -5558,14 +5558,36 @@ sub git_remotes {
or die_error(403, "Remote heads view is disabled");
my $head = git_get_head_hash($project);
git_header_html();
git_print_page_nav('','', $head,undef,$head,format_ref_views('remotes'));
git_print_header_div('summary', $project);
my $remote = $input_params{'hash'};
my @remotelist;
if (defined $remote) {
# only display the heads in a given remote, stripping the
# remote name which is already visible elsewhere
@remotelist = map {
my $ref = $_ ;
$ref->{'name'} =~ s!^$remote/!!;
$ref
} git_get_heads_list(undef, "remotes/$remote");
} else {
@remotelist = git_get_heads_list(undef, 'remotes');
}
git_header_html(undef, undef, -action_extra => $remote);
git_print_page_nav('', '', $head, undef, $head,
format_ref_views($remote ? '' : 'remotes'));
if (defined $remote) {
git_print_header_div('remotes', "$remote remote for $project");
} else {
git_print_header_div('summary', "$project remotes");
}
my @remotelist = git_get_heads_list(undef, 'remotes');
if (@remotelist) {
git_heads_body(\@remotelist, $head);
}
git_footer_html();
}