Subject: Re: [PATCH v2 07/11] gitweb: add 'remotes' action

From: Jakub Narebski <[email-masked]>
Date: Sat, 15 Nov 2008 13:16:30 +0100

On Thu, 13 Nov 2008, Giuseppe "Oblomov" Bilotta wrote:

> This action is similar to the 'heads' action, but it displays
> remote heads, grouped by remote repository.

I think I would prefer would go together with the change that split
the 'heads' ('branches') part of summary view into 'heads' and
'remotes', so that both section title header, and '...' continuation
if present, lead to proper view.

So either

  [heads]  # or [branches]
  master
  to-submit
  origin/master
  origin/next
  ...

where both '[heads]' and (possibly) '...' link to 'heads' view showing
_both_ local branches (refs/heads/*) and remote-tracking branches
(refs/remotes/*), like in first patch of series (perhaps with some
subdivision).

Or

  [heads]
  master
  to-submit
  ...
  [remotes]
  origin/master
  origin/next
  ...

where '[heads]' link to 'heads' view which shows only local branches
(refs/heads/*), and '[remotes]' link to 'remotes' view which shows only
remote-tracking branches.
 
> Signed-off-by: Giuseppe Bilotta <[email-masked]>
> ---
>  gitweb/gitweb.perl |   16 +++++++++++++++-
>  1 files changed, 15 insertions(+), 1 deletions(-)
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 03e0b21..09728cb 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -507,6 +507,7 @@ our %actions = (
>  	"commit" => \&git_commit,
>  	"forks" => \&git_forks,
>  	"heads" => \&git_heads,
> +	"remotes" => \&git_remotes,
>  	"history" => \&git_history,
>  	"log" => \&git_log,
>  	"rss" => \&git_rss,
> @@ -4755,13 +4756,26 @@ sub git_heads {
>  	git_print_page_nav('','', $head,undef,$head);
>  	git_print_header_div('summary', $project);
>  
> -	my @headslist = git_get_heads_list();
> +	my @headslist = git_get_heads_list(undef, 'heads');

Hmmm... I wonder if it would be possible to use some DWIM-mery on
the side of git_get_heads_list (for example checking if first argument
is a number, and assuming that nobody would be insane enough to use
refs/15 for namespace), and just use git_get_heads_list('heads') here.

But I guess that this form is good enough...

>  	if (@headslist) {
>  		git_heads_body(\@headslist, $head);
>  	}
>  	git_footer_html();
>  }
>  
> +sub git_remotes {
> +	my $head = git_get_head_hash($project);
> +	git_header_html();
> +	git_print_page_nav('','', $head,undef,$head);
> +	git_print_header_div('summary', $project . ' remotes');
> +
> +	my @headslist = git_get_heads_list(undef, 'remotes');
> +	if (@headslist) {
> +		git_split_heads_body(\@headslist, $head);
> +	}
> +	git_footer_html();
> +}

Nice. I see the difference from git_heads is using $project . ' remotes'
in place of $project in git_print_header_div() (why?), and using 
'remotes' in call to git_get_heads_list().

> +
>  sub git_blob_plain {
>  	my $type = shift;
>  	my $expires;
> -- 
> 1.5.6.5

-- 
Jakub Narebski
Poland