All of lore.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.demon.co.uk \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=artagnon@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=tanayabh@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.