Jakub Narebski <jnareb@xxxxxxxxx> writes: > Change git_get_references to include type of ref in the %refs value, which > means putting everything after 'refs/' as a ref name, not only last > part of the name. Instead of separating refs pointing to the same > object by " / " separator, use anonymous array reference to store all > refs pointing to given object. > > Use 'git-ls-remote .' if $projectroot/$project/info/refs does not > exist. (Perhaps it should be used always.) > > Refs are now in separate span elements. Class is dependent on the ref > type: currently known classes are 'tag', 'head', 'remote', and 'ref' > (last one for HEAD and other refs in the main directory). There is > encompassing span element of class refs, just in case of unknown ref > type. I do not see definition that matches "span.refs span.remote" in the CSS, though. > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl > index 6be6c55..4fe3fc7 100755 > --- a/gitweb/gitweb.perl > +++ b/gitweb/gitweb.perl > @@ -364,9 +364,26 @@ sub format_log_line_html { > # format marker of refs pointing to given object > sub format_ref_marker { > my ($refs, $id) = @_; > + my $markers = ''; > > if (defined $refs->{$id}) { > - return ' <span class="tag">' . esc_html($refs->{$id}) . '</span>'; > + foreach my $ref (@{$refs->{$id}}) { > + my ($type, $name) = qw(); Just () -- qw() is not needed. > + # e.g. tags/v2.6.11 or heads/next > + if ($ref =~ m!^(.*?)s?/(.*)$!) { > + $type = $1; > + $name = $2; > + } else { > + $type = "ref"; > + $name = $ref; > + } Hmph. Maybe have a hash that defines the ones you know how to handle, and do something like: if ($ref =~ m|^([^/]+)/(.*)$| && exists $i_know_this_class{$1}) { $type = $1; $name = $2; } else { $type = 'ref'; $name = $ref; } > @@ -561,18 +578,24 @@ sub git_get_project_owner { >... > + if ($line =~ m/^([0-9a-fA-F]{40})\trefs\/($type\/?[^\^]+)/) { > if (defined $refs{$1}) { > - $refs{$1} .= " / $2"; > + push @{$refs{$1}}, $2; > } else { > - $refs{$1} = $2; > + $refs{$1} = [ $2 ]; > } > } It would work as in your patch, but I would have preferred to see "exists $refs{$1}" there instead of "defined". Or lose the if() and do it like this, which would be cleaner? if ($line =~ ...) { push @{$refs{$1}}, $2; } - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html