Re: [PATCH] add GIT_FAST_STAT mode for Cygwin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux