git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCHv7 07/11] gitweb: remotes view for a single remote

From
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Date
Nov 11, 2010, 12:26 UTC
Message-ID
<1289478378-15604-8-git-send-email-giuseppe.bilotta@gmail.com>
In-Reply-To
<1289478378-15604-1-git-send-email-giuseppe.bilotta@gmail.com>

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>
---
 gitweb/gitweb.perl |   30 ++++++++++++++++++++++++++----
 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();
 }
 
-- 
1.7.3.68.g6ec8
Previous: Giuseppe BilottaNext: Giuseppe Bilotta
Message 8 of 16 in “[PATCHv7 00/11] gitweb: remote_heads feature”
  1. Giuseppe BilottaNov 11, 2010
  2. 01/11 gitweb: use fullname as hash_base in heads linkGiuseppe Bilotta, Nov 11, 2010
  3. 02/11 gitweb: introduce remote_heads featureGiuseppe Bilotta, Nov 11, 2010
  4. 03/11 gitweb: git_get_heads_list accepts an optional list of refsGiuseppe Bilotta, Nov 11, 2010
  5. 04/11 gitweb: separate heads and remotes listsGiuseppe Bilotta, Nov 11, 2010
  6. 05/11 gitweb: nagivation menu for tags, heads and remotesGiuseppe Bilotta, Nov 11, 2010
  7. 06/11 gitweb: allow action specialization in page headerGiuseppe Bilotta, Nov 11, 2010
  8. 07/11 gitweb: remotes view for a single remoteGiuseppe Bilotta, Nov 11, 2010
  9. 08/11 gitweb: refactor repository URL printingGiuseppe Bilotta, Nov 11, 2010
  10. 09/11 gitweb: provide a routine to display (sub)sectionsGiuseppe Bilotta, Nov 11, 2010
  11. 10/11 gitweb: group remote heads by remoteGiuseppe Bilotta, Nov 11, 2010
  12. Jakub NarebskiNov 11, 2010
  13. 10/11 gitweb: group remote heads by remoteGiuseppe Bilotta, Nov 12, 2010
  14. 11/11 git instaweb: enable remote_headsGiuseppe Bilotta, Nov 11, 2010
  15. Jakub NarebskiNov 11, 2010
  16. Giuseppe BilottaNov 12, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.