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