[V2]: Improved according to the suggestions by Eric Sunshine and Torsten
Added cache invalidation when config file is changed.
I am using git_config_set_multivar_in_file() as an update hook.
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 .
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
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
I have run the tests and debug the code and it works, but I have to add a
1. 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?
Tanay Abhra (2):
config: Add hashtable for config parsing & retrieval
config: Add new query functions to the api docs
Documentation/technical/api-config.txt | 18 +++++
cache.h | 2 +
config.c | 118 +++++++++++++++++++++++++++++++++
3 files changed, 138 insertions(+)
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html