All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: Magnus Hagander <magnus@hagander.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] Allow gitweb tab width to be set per project.
Date: Wed, 29 Sep 2010 11:22:00 +0200	[thread overview]
Message-ID: <201009291122.01272.jnareb@gmail.com> (raw)
In-Reply-To: <AANLkTikMjVQgEzLQ5Z95cmb5fkQ5iSzqfA4T=D1zzy=j@mail.gmail.com>

On Wed, 29 Sep 2010, Magnus Hagander wrote:
> On Tue, Sep 28, 2010 at 14:25, Jakub Narebski <jnareb@gmail.com> wrote:
>> Magnus Hagander <magnus@hagander.net> writes:

>>> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
>>> index a85e2f6..ef92a4f 100755
>>> --- a/gitweb/gitweb.perl
>>> +++ b/gitweb/gitweb.perl
>>> @@ -1465,9 +1465,11 @@ sub unquote {
>>>  # escape tabs (convert tabs to spaces)
>>>  sub untabify {
>>>       my $line = shift;
>>> +     my $tabwidth = git_get_project_config('tabwidth', '--int');
>>
>> Note that untabify() is called once for each _line_ in a file or a
>> diff...
> 
> Ha, that's what I get for thinking it was too easy. It actually was :-)
> 
> 
>> This has acceptable performance only because gitweb config is cached
>> in %config hash by git_get_project_config() subroutine.
>>
>>
>> I'm not sure if it wouldn't be better to have $tabwidth be passed as
>> an (optional) argument to untabify(), and calculated either in calling
>> sites for untabify(), or be calculated per-request and save in a
>> global variable.
> 
> Given that it's cached, will it actually make a big difference?

Well, I agree that with config cached it could be left like this...
but I would like very much to perhaps have a comment about this, so other
people don't have to wonder.
 

>>> +     $tabwidth = 8 if ($tabwidth <= 0);
>>
>> git_get_project_config('tabwidth', '--int') can return 'undef' if a
>> configuration key does not exist, resulting in
>>
>>  Use of uninitialized value in numeric le (<=) at
>>
>> warning in web server logs.
> 
> Ah, I knew that would go somewhere. Interestingly enough, it doesn't
> show up in the logs of the server I run it on now. But still should be
> fixed.

Whether such warning shows in web server logs might depend on whether
you are running gitweb under mod_perl, or as plain CGI script.
Nevertheless it is a good practice to check if a change passess
appropriate tests from git testsuite; t9500-gitweb-standalone-no-errors
should detect this.

Simply use

    +     $tabwidth = 8 if (!defined $tabwidth || $tabwidth <= 0);

or

    +     $tabwidth = 8 if (!$tabwidth || $tabwidth <= 0);

(though second version is more cryptic).


P.S. If it is not a %feature, we might want to add description of
gitweb.tabwidth to the "Per-repository gitweb configuration" section
in gitweb/README (as next to last item)

-- 
Jakub Narebski
Poland

  reply	other threads:[~2010-09-29  9:22 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-28 11:35 [PATCH] Allow gitweb tab width to be set per project Magnus Hagander
2010-09-28 12:25 ` Jakub Narebski
2010-09-29  8:39   ` Magnus Hagander
2010-09-29  9:22     ` Jakub Narebski [this message]
2010-10-01 11:56       ` Magnus Hagander
2010-10-01 21:02         ` Jakub Narebski
2010-10-18 10:31           ` Magnus Hagander
2010-10-18 10:41             ` Magnus Hagander

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201009291122.01272.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=magnus@hagander.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.