[prev in list] [next in list] [prev in thread] [next in thread]
List: git
Subject: Re: [PATCH] add GIT_FAST_STAT mode for Cygwin
From: Dmitry Potapov <dpotapov () gmail ! com>
Date: 2008-09-23 20:04:56
Message-ID: 20080923200456.GR21650 () dpotapov ! dyndns ! org
[Download RAW message or body]
On Tue, Sep 23, 2008 at 12:06:37PM -0700, Shawn O. Pearce wrote:
>
> and then disable it on a per-repository basis if you and a specific
> repository which has this inner mount problem:
>
> git config core.cygwinnativestat false
>
> Which is a lot more powerful than an environment variable.
I already said that I completely agree that is a good idea even I don't
know the real need for having per-repository configuration in practice.
>
> > However, this option is Cygwin specific, so I am not sure where it
> > should be read. Should I place it in git_default_core_config like
> > this:
> >
> > #ifdef __CYGWIN__
> > if (!strcmp(var, "core.cygwinnativestat")) {
> > cygwin_native_stat = git_config_bool(var, value);
> > return 0;
> > }
> > #endif
>
> I would have the two initial stat functions swap themselves out with
> the default Cygin stat implementations, run a parse over the config
> to load that one bool, then install the proper implementations based
> upon its value. Hence all Cygwin code is kept inside of the Cygwin
> compat code, and no #ifdef is necessary
Do I understand you correctly that you propose to add the code like
this in compat/cygwin.c:
static int native_stat;
static int git_cygwin_config(const char *var, const char *value, void
*cb)
{
if (!strcmp(var, "core.cygwinnativestat"))
cygwin_native_stat = git_config_bool(var, value);
return 0;
}
static void init_stat(void)
{
git_config(git_cygwin_config, NULL);
cygwin_stat_fn = native_stat ? cygwin_stat : stat;
cygwin_lstat_fn = native_stat ? cygwin_lstat : lstat;
}
static int cygwin_stat_choice(const char *file_name, struct stat *buf)
{
init_stat();
return (*cygwin_stat_fn)(file_name, buf);
}
static int cygwin_lstat_choice(const char *file_name, struct stat *buf)
{
init_stat();
return (*cygwin_lstat_fn)(file_name, buf);
}
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic