From: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
To: git@vger.kernel.org
Cc: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Subject: [PATCH 06/14] gitweb: git_split_heads_body function.
Date: Fri, 31 Aug 2007 13:05:24 +0200 [thread overview]
Message-ID: <11885583243085-git-send-email-giuseppe.bilotta@gmail.com> (raw)
In-Reply-To: <cb7bb73a0708301915y47ca4a05nf511889b2bb2eaec@mail.gmail.com>
The purpose of this function is to split a headlist into groups determined by the leading part of the refname, and call git_heads_body() on each group.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
gitweb/gitweb.perl | 33 ++++++++++++++++++++++++++++++++-
1 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index c46e982..cacb0d7 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -3640,6 +3640,37 @@ sub git_tags_body {
print "</table>\n";
}
+sub git_split_heads_body {
+ my ($headlist, $head, $from, $to, $extra) = @_;
+ my %headlists;
+ my $leader; my $list; my @list;
+
+ # Split @$headlist into a hash of lists
+ map {
+ my %ref = %$_;
+ $ref{'hname'} = $ref{'name'};
+ if ($ref{'name'} =~ /\//) {
+ $ref{'name'} =~ s!^([^/]+)/!!;
+ $leader = $1;
+ } else {
+ $leader = "\000";
+ }
+ if (defined $headlists{$leader}) {
+ @list = @{$headlists{$leader}}
+ } else {
+ @list = ()
+ }
+ push @list, \%ref;
+ $headlists{$leader} = [@list];
+ } @$headlist;
+
+ foreach $leader (sort(keys %headlists)) {
+ print "<b>$leader</b><br/>\n" unless $leader eq "\000";
+ $list = $headlists{$leader};
+ git_heads_body($list, $head, $from, $to, $extra);
+ }
+}
+
sub git_heads_body {
# uses global variable $project
my ($headlist, $head, $from, $to, $extra) = @_;
@@ -3880,7 +3911,7 @@ sub git_summary {
if (@remotelist) {
git_print_header_div('remotes');
- git_heads_body(\@remotelist, $head, 0, 15,
+ git_split_heads_body(\@remotelist, $head, 0, 15,
$#remotelist <= 15 ? undef :
$cgi->a({-href => href(action=>"heads")}, "..."));
}
--
1.5.2.5
next prev parent reply other threads:[~2007-08-31 11:07 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-27 22:24 gitweb and remote branches Giuseppe Bilotta
2007-08-27 23:29 ` Jakub Narebski
[not found] ` <cb7bb73a0708280253y7d31f347yb84a40982d59d9d2@mail.gmail.com>
[not found] ` <cb7bb73a0708280453k4315e80ej170238a52e66dcb6@mail.gmail.com>
2007-08-29 22:01 ` Jakub Narebski
2007-08-30 7:18 ` Giuseppe Bilotta
2007-08-30 8:16 ` Jakub Narebski
2007-08-30 9:09 ` Giuseppe Bilotta
2007-08-30 21:07 ` Junio C Hamano
2007-08-30 23:09 ` Giuseppe Bilotta
2007-08-30 23:53 ` Jakub Narebski
2007-08-30 23:59 ` Giuseppe Bilotta
2007-08-31 2:15 ` Giuseppe Bilotta
2007-08-31 10:54 ` [PATCH 01/14] gitweb: get remotes too when getting heads list Giuseppe Bilotta
2007-08-31 10:55 ` [PATCH 02/14] gitweb: make remote heads in heads list optional Giuseppe Bilotta
2007-08-31 10:55 ` [PATCH 03/14] gitweb: git_get_heads_list now accepts an optional list of refs Giuseppe Bilotta
2007-08-31 10:55 ` [PATCH 04/14] gitweb: separate heads and remotes list in summary view Giuseppe Bilotta
2007-08-31 10:59 ` [PATCH 05/14] gitweb: allow refs passed to git_heads_body to use a name different from the hash name Giuseppe Bilotta
2007-08-31 11:05 ` Giuseppe Bilotta [this message]
2007-08-31 11:18 ` [PATCH 07/14] gitweb: use CSS to style split head lists Giuseppe Bilotta
2007-08-31 11:18 ` [PATCH 08/14] gitweb: add 'remotes' action as a synonym for git_heads() Giuseppe Bilotta
2007-08-31 11:18 ` [PATCH 09/14] gitweb: split heads list in head view if appropriate Giuseppe Bilotta
2007-08-31 11:19 ` [PATCH 10/14] gitweb: display HEAD in heads list when detached Giuseppe Bilotta
2007-08-31 11:19 ` [PATCH 11/14] gitweb: git_is_head_detached() function Giuseppe Bilotta
2007-08-31 11:19 ` [PATCH 12/14] gitweb: add HEAD to list of shortlog refs if detached Giuseppe Bilotta
2007-08-31 11:19 ` [PATCH 13/14] gitweb: CSS style and refs mark for detached HEAD Giuseppe Bilotta
2007-08-31 11:19 ` [PATCH 14/14] gitweb: minor whitespace cleanups Giuseppe Bilotta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11885583243085-git-send-email-giuseppe.bilotta@gmail.com \
--to=giuseppe.bilotta@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).