Re: [PATCH 6/9] gitweb: Change appereance of marker of refs pointing to given object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]