Re: [PATCH 6/9] gitweb: Change appereance of marker of refs pointing to given object
- From
Junio C Hamano <junkio@cox.net>
- Date
- Aug 15, 2006, 00:27 UTC
- Message-ID
- <7vy7tqc06u.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <200608140214.20450.jnareb@gmail.com>
Jakub Narebski <jnareb@gmail.com> writes:
Show 14 quoted lines
> 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.
Show 14 quoted lines
> 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.
Show 8 quoted lines
> + # 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;
}Show 11 quoted lines
> @@ -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;
}