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]

 



Junio C Hamano wrote:

> 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.

It get's default style "span.refs span" (and fefault colors).

>> +                    # 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;
>       }

But what types are known is defined in CSS, not in gitweb.perl. The rule
is that type is defined by first component of the ref name, in singular form
(so with optional final s removed, refs -> ref, tags -> tag, remotes -> remote).
All unknown types get default "span.refs span" format, thanks to encompassing
span element.

"ref" class is for refs directly in $GIT_DIR, like HEAD or ORIG_HEAD (as of now
you cannot get such a ref due to the regexp used in git_get_references, and
the fact that you have no such refs in $GIT_DIR/info/refs file, and 
'git-ls-remote .' gives only HEAD; but we could add them 'by hand').

>> @@ -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;
>       }

That's even better.

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git


-
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]