Skip to content

Commit

Permalink
gitweb: introduce remote_heads feature
Browse files Browse the repository at this point in the history
With this feature enabled, remote heads 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.

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>
  • Loading branch information
Giuseppe Bilotta authored and Junio C Hamano committed Nov 17, 2010
1 parent 9e70e15 commit 60efa24
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions gitweb/gitweb.perl
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,18 @@ sub evaluate_uri {
'sub' => sub { feature_bool('highlight', @_) },
'override' => 0,
'default' => [0]},

# Enable displaying of remote heads 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]},
);

sub gitweb_get_feature {
Expand Down Expand Up @@ -3160,10 +3172,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' : ())
or return;
while (my $line = <$fd>) {
my %ref_item;
Expand All @@ -3174,7 +3188,7 @@ 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{'name'} = $name;
$ref_item{'id'} = $hash;
Expand Down

0 comments on commit 60efa24

Please sign in to comment.