git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] add GIT_FAST_STAT mode for Cygwin

From
Dmitry Potapov <dpotapov@gmail.com>
Date
Sep 23, 2008, 20:04 UTC
Message-ID
<20080923200456.GR21650@dpotapov.dyndns.org>
In-Reply-To
<20080923190637.GJ3669@spearce.org>
On Tue, Sep 23, 2008 at 12:06:37PM -0700, Shawn O. Pearce wrote:
Show 7 quoted lines
> 
> 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.

Show 17 quoted lines
>  
> > 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
Previous: Shawn O. PearceNext: Shawn O. Pearce
Message 15 of 25 in “add GIT_FAST_STAT mode for Cygwin”
  1. add GIT_FAST_STAT mode for CygwinDmitry Potapov, Sep 23, 2008
  2. Alex RiesenSep 23, 2008
  3. Dmitry PotapovSep 23, 2008
  4. Jakub NarebskiSep 23, 2008
  5. Alex RiesenSep 24, 2008
  6. Dmitry PotapovSep 24, 2008
  7. Alex RiesenSep 24, 2008
  8. Shawn O. PearceSep 24, 2008
  9. Alex RiesenSep 24, 2008
  10. Shawn O. PearceSep 24, 2008
  11. Alex RiesenSep 24, 2008
  12. Shawn O. PearceSep 23, 2008
  13. Dmitry PotapovSep 23, 2008
  14. Shawn O. PearceSep 23, 2008
  15. Dmitry PotapovSep 23, 2008
  16. Shawn O. PearceSep 23, 2008
  17. Dmitry PotapovSep 23, 2008
  18. Shawn O. PearceSep 23, 2008
  19. Johannes SixtSep 23, 2008
  20. Dmitry PotapovSep 23, 2008
  21. Johannes SixtSep 23, 2008
  22. Dmitry PotapovSep 23, 2008
  23. Add a "fast stat" mode for CygwinMarcus Griep, Sep 27, 2008
  24. Alex RiesenSep 27, 2008
  25. Dmitry PotapovSep 27, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.