Re: [PATCH] add GIT_FAST_STAT mode for Cygwin
Dmitry Potapov <dpotapov@gmail.com> wrote:
> Do I understand you correctly that you propose to add the code like
> this in compat/cygwin.c:
Yes. But with minor changes (see below):
> static int native_stat;
static int native_stat = -1;
Show 13 quoted lines
> 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;if (native_stat < 0 && have_git_dir()) {
native_stat = 0;
git_config(git_cygwin_config, NULL);
cygwin_stat_fn = native_stat ? cygwin_stat : stat;
cygwin_lstat_fn = native_stat ? cygwin_lstat : lstat;
}and then you have to define have_git_dir() inside environment.c as:
int have_git_dir(void)
{
return !!git_dir;
}
Show 11 quoted lines
> 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);
> }--
Shawn.