From: Tanay Abhra <tanayabh@gmail.com>
To: git@vger.kernel.org
Cc: Tanay Abhra <tanayabh@gmail.com>,
Ramkumar Ramachandra <artagnon@gmail.com>,
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Subject: [RFC/PATCH 0/2] Git config cache & special querying api utilizing the cache
Date: Mon, 26 May 2014 10:33:19 -0700 [thread overview]
Message-ID: <1401125601-18249-1-git-send-email-tanayabh@gmail.com> (raw)
Hi,
This is my first patch series for this year's GSoC. My project is
"Git Config API improvements". The link of my proposal is appended below [1].
The aim of this patch series is to generate a cache for querying values from
the config files in a non callback manner as the current method reads and
parses the config files every time a value is queried for.
The cache is generated from hooking the update_cache function to the current
parsing and callback mechanism in config.c. It is implemented as an hashmap
using the hashmap-api with variables and its corresponding values list as
its members. The values in the list are sorted in order of increasing priority.
The cache is initialised in git_config_early() as it is the first time a `git_config`
function is called during program startup. setup_git_directory_gently() calls
git_config_early() which in turn reads every config file (local, user and
global config files).
get_value() in config.c feeds variable and values into the callback function.
Using this function as a hook, we update the cache. Also, we add two new
functions to the config-api git_config_get_string() and
git_config_get_string_multi() for querying in a non callback manner from
the cache.
I have run the tests and debug the code and it works, but I have to add a
few things,
1. Invalidity check: if a config file is written into, update the cache.
I am using git_config_set_multivar_in_file() as an update hook.
2. Metadata about the variables and values. I have added only the file
from each variable value pair comes in an upcoming series.
What else should I add or implement ;is my approach right?
[1] https://drive.google.com/file/d/0B4suZ-aHqDcnSUZJRXVTTnZUN1E/edit?usp=sharing
Cheers,
Tanay Abhra.
Tanay Abhra (2):
config: Add cache for config value querying
config: Add new query functions to the api
Documentation/technical/api-config.txt | 19 ++++++
cache.h | 2 +
config.c | 105 +++++++++++++++++++++++++++++++++
3 files changed, 126 insertions(+)
--
1.9.0.GIT
next reply other threads:[~2014-05-26 17:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-26 17:33 Tanay Abhra [this message]
2014-05-26 17:33 ` [RFC/PATCH 1/2] config: Add cache for config value querying Tanay Abhra
2014-05-26 20:02 ` Torsten Bögershausen
2014-05-27 13:54 ` Tanay Abhra
2014-05-28 9:31 ` Eric Sunshine
2014-05-26 17:33 ` [RFC/PATCH 2/2] config: Add new query functions to the api Tanay Abhra
2014-05-28 9:43 ` Eric Sunshine
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=1401125601-18249-1-git-send-email-tanayabh@gmail.com \
--to=tanayabh@gmail.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=artagnon@gmail.com \
--cc=git@vger.kernel.org \
/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).