summaryrefslogtreecommitdiff
path: root/gitweb
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2010-11-11 12:26:14 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-11-17 21:02:19 (GMT)
commitbb60776063f0575c1a880cd606b7470e36a7cd86 (patch)
tree61640a01d09b0cf91c9fdc134e5a13d138d88a17 /gitweb
parentc7d94cdbe7ed29a0e26645fa4bb30d87755d86aa (diff)
downloadgit-bb60776063f0575c1a880cd606b7470e36a7cd86.zip
git-bb60776063f0575c1a880cd606b7470e36a7cd86.tar.gz
git-bb60776063f0575c1a880cd606b7470e36a7cd86.tar.bz2
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>
Diffstat (limited to 'gitweb')
-rwxr-xr-xgitweb/gitweb.perl30
1 files changed, 26 insertions, 4 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index c3b8966..bf38757 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -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();
}