From: Jakub Narebski <jnareb@gmail.com>
To: Bruno Cesar Ribas <ribas@c3sl.ufpr.br>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org
Subject: Re: [PATCH] gitweb: Use config file or file for repository owner's name.
Date: Mon, 4 Feb 2008 15:00:48 +0100 [thread overview]
Message-ID: <200802041500.49682.jnareb@gmail.com> (raw)
In-Reply-To: <20080204133542.GA8197@c3sl.ufpr.br>
On Mon, 4 Feb 2008, Bruno Cesar Ribas wrote:
> On Fri, Feb 01, 2008 at 01:17:07AM +0100, Jakub Narebski wrote:
>><snip>
>> Note that some of info is needed for 'projects_list' view, and some only
>> for the 'summary' view.
>> Currently for 'projects_list' view we have, when $projects_list is
>> a directory (this includes situation when it is undef, and fallbacks
>> to $projectroot):
>> 1. Call git-for-each-ref to get last modification time
>> 2. Read $git_dir/description file for description (which is generated
>> by default template, so is usualy present, if in useless form),
>> fallback to git-config / reading $git_dir/config, gitweb.description
>> 3. Check owner of $git_dir (stat + getpwuid)
>>
>> With the addition of $git_dir/owner and gitweb.owner we would have
>> 3'. Read $git_dir/owner file, usually not present,
>> fallback to gitweb.owner (which means reading and parsing
>> repo config!),
>> fallback to $git_dir owner (stat + getpwuid)
>> so after consideration I think that adding gitweb.owner is a bit of
>> a stupid idea from performance point of view, at least till we have
>> 'projects_list' caching. Only $git_dir/owner would be better.
>
> Unless we parse config only once for each project. We can create a small
> cache with all gitweb conf. Then each time we ask
> git_get_project_config('bla') we check if we alread had parsed it, if parsed
> get in a small hash table.
If you have read gitweb.perl current code more carefully, or browsed
"git log -- gitweb" output, you would notice that since b201927a
gitweb: Read repo config using 'git config -z -l'
gitweb does just that. Reads whole repo config using "git config -z -l"
(this additionally includes support for user and system git
configuration files; also git config file format has some hairy corners)
into hash lazily, then uses this hash.
But this is once per repo, which for 'projects_list' might be too much,
especialy for the operating systems where fork is slow. I'd rather go
in opposite direction and add support for providing description in
'projects_list' file.
> We could even check if we are generating project list then we can store only
> description and owner. (this sounds ugly)
This doesn't buy us much, because description and owner migh be in the
last lines of repo config, so we have to read whole config file in full.
Note that if I understand this correctly variable initialization,
including %config and $config_file are generated anew for each request.
Besides, as it is now, viewing some project view would flush out
projects_list %config, etc.
>> Another solution would be using $projectroot/.gitconfig, with simplified
>> syntax easy parseable by Perl, with gitweb.<repo path>.<config>, where
>> <config> is limited to 'description', 'owner' and 'url', and
>> gitweb.description for fallback description, gitweb.owner for fallback
>> owner and owner for set of repositories, gitweb.baseurl for base URLs
>> (gitweb.<repo>.url = gitweb.baseurl/<repo>).
>
> This sounds good. Having this small, simple file would make things better.
> But we will have another file inside repository, having all in config would
> be cleaner [i guess]. If we parse config file only once per project might be
> good.
I think that it would be better to separate gitweb configuration
(in gitweb_config.perl) fro [cached] repositories configuration
(in gitconfig or .gitconfig).
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2008-02-04 14:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-30 5:28 [PATCH] gitweb: Use config file or file for repository owner's name Bruno Ribas
2008-01-30 5:28 ` [PATCH] gitweb: Update gitweb/README to include the new per-repository configuration Bruno Ribas
2008-01-30 6:16 ` [PATCH] gitweb: Use config file or file for repository owner's name Junio C Hamano
2008-01-31 2:36 ` Bruno Cesar Ribas
2008-01-31 2:48 ` Junio C Hamano
2008-01-31 3:02 ` Bruno Cesar Ribas
2008-01-31 3:06 ` Junio C Hamano
2008-01-31 3:36 ` Jakub Narebski
2008-01-31 11:12 ` Johannes Schindelin
2008-02-01 0:17 ` Jakub Narebski
2008-02-04 13:35 ` Bruno Cesar Ribas
2008-02-04 14:00 ` Jakub Narebski [this message]
2008-02-05 4:41 ` Bruno Cesar Ribas
2008-02-05 10:04 ` Jakub Narebski
2008-02-05 14:28 ` Bruno Cesar Ribas
2008-02-07 4:12 ` Bruno Cesar Ribas
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=200802041500.49682.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ribas@c3sl.ufpr.br \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).