Re: [PATCH 1/7] gitweb: introduce remote_heads feature
From: Jakub Narebski <hidden>
Date: 2016-06-15 22:49:33
On Thu, 16 Sep 2010, Giuseppe Bilotta wrote:
With this feature enabled, remotes are retrieved (and displayed) when getting (and displaying) the heads list. Typical usage would be for local repository browsing, e.g. by using git-instaweb (or even a more permanent gitweb setup), to check the repository status and the relation between tracking branches and the originating remotes.
Good idea.
quoted hunk ↗ jump to hunk
Signed-off-by: Giuseppe Bilotta <redacted> --- gitweb/gitweb.perl | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-)diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index a85e2f6..7116c26 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl@@ -486,6 +486,18 @@ our %feature = ( 'sub' => sub { feature_bool('highlight', @_) }, 'override' => 0, 'default' => [0]}, + + # Make gitweb show remotes too in the heads list + + # To enable system wide have in $GITWEB_CONFIG + # $feature{'remote_heads'}{'default'} = [1]; + # To have project specific config enable override in $GITWEB_CONFIG + # $feature{'remote_heads'}{'override'} = 1; + # and in project config gitweb.remote_heads = 0|1; + 'remote_heads' => { + 'sub' => sub { feature_bool('remote_heads', @_) }, + 'override' => 0, + 'default' => [0]},
I agree both with this feature being turned off by default, and with it being per-project overridable.
quoted hunk ↗ jump to hunk
); sub gitweb_get_feature {@@ -3146,10 +3158,12 @@ sub git_get_heads_list { my $limit = shift; my @headslist; + my $remote_heads = gitweb_check_feature('remote_heads'); + open my $fd, '-|', git_cmd(), 'for-each-ref', ($limit ? '--count='.($limit+1) : ()), '--sort=-committerdate', '--format=%(objectname) %(refname) %(subject)%00%(committer)', - 'refs/heads' + 'refs/heads', ( $remote_heads ? 'refs/remotes' : '')
The usual way for optionally providing extra arguments to git commands in gitweb is to use empty list "()" and not empty argument "''", i.e. it would be: + 'refs/heads', ( $remote_heads ? 'refs/remotes' : ()) See for example git_get_references, parse_commits,... and evem the line with "($limit ? ...)" above in git_get_heads_list.
quoted hunk ↗ jump to hunk
or return; while (my $line = <$fd>) { my %ref_item;@@ -3160,8 +3174,9 @@ sub git_get_heads_list { my ($committer, $epoch, $tz) = ($committerinfo =~ /^(.*) ([0-9]+) (.*)$/); $ref_item{'fullname'} = $name; - $name =~ s!^refs/heads/!!; + $name =~ s!^refs/(head|remote)s/!!; + $ref_item{'class'} = $1;
Is it used anywhere, or is it left to be used by a further commit in the series? If it is the latter, perhaps it would be worth mentioning in the commit message?
$ref_item{'name'} = $name;
$ref_item{'id'} = $hash;
$ref_item{'title'} = $title || '(no commit message)';
--
1.7.3.rc1.230.g8b572
-- Jakub Narebski Poland