git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>
Cc: git discussion list <git@vger.kernel.org>,
	Jeff King <peff@peff.net>,
	Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Subject: Re: RFC GSoC idea: git configuration caching (needs co-mentor!)
Date: Thu, 06 Mar 2014 22:33:14 +0100	[thread overview]
Message-ID: <5318E99A.20708@alum.mit.edu> (raw)
In-Reply-To: <xmqqtxbbxh99.fsf@gitster.dls.corp.google.com>

On 03/06/2014 08:24 PM, Junio C Hamano wrote:
> Michael Haggerty <mhagger@alum.mit.edu> writes:
> 
>> I just wrote up the idea that fell out of the discussion [1] about the
>> other configuration features that I proposed.  As far as I am concerned,
>> it can be merged as soon as somebody volunteers as a co-mentor.  The
>> idea is embodied in a pull request against the git.github.io repository
>> [2]; the text is also appended below for your convenience.
>>
>> Michael
>>
>> [1] http://article.gmane.org/gmane.comp.version-control.git/242952
>> [2] https://github.com/git/git.github.io/pull/7
>>
>> ### git configuration API improvements
>>
>> There are many places in Git that need to read a configuration value.
>> Currently, each such site calls `git_config()`, which reads and parses
>> the configuration files every time that it is called.  This is
>> wasteful, because it results in the configuration files being
>> processed multiple times during a single `git` invocation.  It also
>> prevents the implementation of potential new features, like adding
>> syntax to allow a configuration file to unset a previously-set value.
>>
>> This goal of this project is to make configuration work as follows:
>>
>> * Read the configuration from files once and cache the results in an
>>   appropriate data structure in memory.
>>
>> * Change `git_config()` to iterate through the pre-read values in
>>   memory rather than re-reading the configuration files.
>>
>> * Add new API calls that allow the cache to be inquired easily and
>>   efficiently.  Rewrite other functions like `git_config_int()` to be
>>   cache-aware.
> 
> Are you sure about the second sentence of this item is what you
> want?
> 
> git_config_<type>(name, value) are all about parsing "value" (string
> or NULL) as <type>, return the parsed value or complain against a
> bad value for "name".  They do not care where these "name" and
> "value" come from right now, and there is no reason for them to
> start caring about caching.  They will still be the underlying
> helper functions the git_config() callbacks will depend on even
> after the second item in your list happens.

You're right of course.  For some reason I had it in my brain that these
functions retrieved *and* parsed values, as opposed to just parsing them.

I just fixed the text and pushed it live.

Michael

-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/

      parent reply	other threads:[~2014-03-06 21:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-06  5:57 RFC GSoC idea: git configuration caching (needs co-mentor!) Michael Haggerty
2014-03-06 19:24 ` Junio C Hamano
2014-03-06 19:46   ` Jeff King
2014-03-06 21:33   ` Michael Haggerty [this message]

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=5318E99A.20708@alum.mit.edu \
    --to=mhagger@alum.mit.edu \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.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 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).