From: Matthieu Moy <Matthieu.Moy@grenoble-inp•fr>
To: Tanay Abhra <tanayabh@gmail•com>
Cc: Junio C Hamano <gitster@pobox•com>,
git@vger•kernel.org, Ramkumar Ramachandra <artagnon@gmail•com>
Subject: Re: [PATCH v9r2 1/2] add `config_set` API for caching config-like files
Date: Thu, 17 Jul 2014 13:34:54 +0200 [thread overview]
Message-ID: <vpqiomwmd5t.fsf@anie.imag.fr> (raw)
In-Reply-To: <53C7AE43.5080402@gmail.com> (Tanay Abhra's message of "Thu, 17 Jul 2014 16:36:43 +0530")
Tanay Abhra <tanayabh@gmail•com> writes:
> I am searching for a more elegant solution to this problem.
The "efficient" (not sure about elegant) solution would be to keep one
configset per file, and re-parse only the files needed.
I find the solution I posted in the other thread relatively "elegant":
invalidate the config cache when things change.
The last test failure seems more tricky. This (dirty) patch fixes the
failure:
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -255,6 +255,8 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
return run_diff_files(revs, options);
}
+int git_config_raw(config_fn_t fn, void *data);
+
int cmd_diff(int argc, const char **argv, const char *prefix)
{
int i;
@@ -317,7 +319,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
if (!no_index)
gitmodules_config();
- git_config(git_diff_ui_config, NULL);
+ git_config_raw(git_diff_ui_config, NULL);
init_revisions(&rev, prefix);
But this one does not:
diff --git a/builtin/diff.c b/builtin/diff.c
index 0f247d2..2012e81 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -317,7 +317,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
if (!no_index)
gitmodules_config();
+ git_config_clear();
git_config(git_diff_ui_config, NULL);
+ git_config_clear();
init_revisions(&rev, prefix);
So it's not just a matter of invalid cache not cleared, it's a real
difference between git_config() and git_config_raw(). The guilty part is
probably userdiff_config(const char *k, const char *v) in userdiff.c,
that parses the xfuncname config option.
--
Matthieu Moy
http://www-verimag.imag.fr/~moy/
next prev parent reply other threads:[~2014-07-17 11:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-15 14:29 [PATCH v9 0/3] git config cache & special querying api utilizing the cache Tanay Abhra
2014-07-15 14:29 ` [PATCH v9 1/2] add `config_set` API for caching config-like files Tanay Abhra
2014-07-15 15:46 ` Junio C Hamano
2014-07-15 16:22 ` Tanay Abhra
2014-07-16 11:41 ` [PATCH v9r1 " Tanay Abhra
2014-07-15 14:29 ` [PATCH v9 2/2] test-config: add tests for the config_set API Tanay Abhra
2014-07-15 15:57 ` Junio C Hamano
2014-07-15 17:07 ` Tanay Abhra
2014-07-15 18:26 ` Junio C Hamano
2014-07-16 11:44 ` [PATCH v9r1 " Tanay Abhra
2014-07-16 11:49 ` Matthieu Moy
2014-07-16 12:22 ` [PATCH v9r2 1/2] add `config_set` API for caching config-like files Tanay Abhra
2014-07-16 16:06 ` Matthieu Moy
2014-07-16 16:09 ` [PATCH 1/3] fixup for patch 2: minor style fix Matthieu Moy
2014-07-16 16:09 ` [PATCH 2/3] fixup for patch 2: actually check the return value Matthieu Moy
2014-07-16 16:55 ` Tanay Abhra
2014-07-16 17:10 ` Matthieu Moy
2014-07-16 16:09 ` [PATCH 3/3] fixup for patch 1: typo Matthieu Moy
2014-07-16 16:44 ` [PATCH v9r2 1/2] add `config_set` API for caching config-like files Tanay Abhra
2014-07-16 17:06 ` Matthieu Moy
[not found] ` <53C6C2BD.3030703@gmail.com>
2014-07-17 10:01 ` Matthieu Moy
2014-07-17 11:06 ` Tanay Abhra
2014-07-17 11:34 ` Matthieu Moy [this message]
2014-07-17 11:13 ` Matthieu Moy
2014-07-17 17:12 ` Junio C Hamano
2014-07-16 12:22 ` [PATCH v9r2 2/2] test-config: add tests for the config_set API Tanay Abhra
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=vpqiomwmd5t.fsf@anie.imag.fr \
--to=matthieu.moy@grenoble-inp$(echo .)fr \
--cc=artagnon@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=tanayabh@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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