public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Ramsay Jones <ramsay@ramsay1•demon.co.uk>
To: Matthieu Moy <Matthieu.Moy@grenoble-inp•fr>,
	Tanay Abhra <tanayabh@gmail•com>
Cc: git@vger•kernel.org, Ramkumar Ramachandra <artagnon@gmail•com>,
	Junio C Hamano <gitster@pobox•com>
Subject: Re: [PATCH v4 0/5] git_config callers rewritten with the new config cache API
Date: Thu, 31 Jul 2014 12:37:02 +0100	[thread overview]
Message-ID: <53DA2A5E.4020101@ramsay1.demon.co.uk> (raw)
In-Reply-To: <vpqiomeokx7.fsf@anie.imag.fr>

On 30/07/14 17:45, Matthieu Moy wrote:
> Tanay Abhra <tanayabh@gmail•com> writes:
>> Also, any thoughts on what to do with git_default_config()? We can,
>>
>> 1> make a new function git_load_default_config(), use it for the rewrites.
> 
> That seems the most sensible option. It could be called it git.c before
> the command-dependant part, so that any call to git loads this.
> 
> I didn't check if it was correct (e.g. do some command rely on the fact
> that the default config is not loaded?)
> 

Hmm, here be dragons ... :-P

I don't know that there has actually been any kind of policy
regarding the reading of config files/variables in git (or if
there is a different policy for plumbing vs porcelain), but it
has always seemed to be somewhat ad-hoc; each command decides
for itself what it wants to read.

However, with increased use of common code which _uses_ certain
config variables for correct operation, the 'choice' is much
harder to make (and may change after the fact!).

For example, about a year ago I submitted a couple of patches
which added a call to git_config(git_default_config, NULL) to
both 'git pack-refs' and 'git show-refs'. This was as a result
of the 'mh/ref-races' branch which introduced a 'stat_validity'
api for checking if the packed-refs file had changed on the
filesystem since last you looked. This re-used some of the same
code used to handle index updates that used config variables
like core.checkstat and core.trustctime. These config variables
can affect the correctness and/or the efficiency of the code on
some platforms (e.g. cygwin, mingw).

[Note: 'stat_validity' has since been re-used again (why not?)
in some shallow clone code, so similar comments may apply ...
I haven't looked.]

However, those patches were dropped, because it resulted in an
(unwanted) change in behaviour. In particular, 'git show-refs'
changed behaviour because it now 'listened' to core.abbrev!

I started to look at splitting the 'core config variables' into
two groups; essential variables that _all_ git commands should
read for correct/efficient/consistent behaviour and everything
else (mainly UI related variables).

However, something else came up ...

Just an FYI.

ATB,
Ramsay Jones

      reply	other threads:[~2014-07-31 11:37 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30 13:39 [PATCH v4 0/5] git_config callers rewritten with the new config cache API Tanay Abhra
2014-07-30 13:39 ` [PATCH v4 1/5] pager.c: replace `git_config()` with `git_config_get_value()` Tanay Abhra
2014-07-30 13:39 ` [PATCH v4 2/5] notes.c: replace `git_config()` with `git_config_get_value_multi()` Tanay Abhra
2014-07-30 14:13   ` Matthieu Moy
2014-07-30 14:40     ` Tanay Abhra
2014-07-30 16:42       ` Matthieu Moy
2014-07-31 11:38         ` Matthieu Moy
2014-07-31 12:13           ` Tanay Abhra
2014-07-30 13:39 ` [PATCH v4 3/5] imap-send.c: replace `git_config()` with `git_config_get_*()` family Tanay Abhra
2014-07-30 13:39 ` [PATCH v4 4/5] branch.c: replace `git_config()` with `git_config_get_string() Tanay Abhra
2014-07-30 16:23   ` Matthieu Moy
2014-07-30 13:39 ` [PATCH v4 5/5] alias.c: replace `git_config()` with `git_config_get_string()` Tanay Abhra
2014-07-30 13:46 ` [PATCH v4 0/5] git_config callers rewritten with the new config cache API Matthieu Moy
2014-07-30 14:03   ` Tanay Abhra
2014-07-30 16:45     ` Matthieu Moy
2014-07-31 11:37       ` Ramsay Jones [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=53DA2A5E.4020101@ramsay1.demon.co.uk \
    --to=ramsay@ramsay1$(echo .)demon.co.uk \
    --cc=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