Mark Levedahl <mlevedahl@xxxxxxxxx> writes: > Cygwin's POSIX emulation allows use of core.filemode true, unlike native > Window's implementation of stat / lstat, and Cygwin/git users who have > configured core.filemode true in various repositories will be very > unpleasantly surprised to find that git is no longer honoring that option. > So, this patch fores use of Cygwin's stat functions if core.filemode is s/fores/forces/; > static int native_stat = 1; > +static int core_filemode = 0; Makes me wonder why "trust_executable_bit" is unavailable here. Perhaps git_cygwin_config() does not fall back to git_default_config() for a reason? > static int git_cygwin_config(const char *var, const char *value, void *cb) > { > + if (!strcmp(var, "core.filemode")) { > + core_filemode = git_config_bool(var, value); > + native_stat &= !core_filemode; > + } > if (!strcmp(var, "core.ignorecygwinfstricks")) > - native_stat = git_config_bool(var, value); > + native_stat = git_config_bool(var, value) && > + !core_filemode; > return 0; > } If you can safely determine if you would want to use cygwin_stat or not only after you have read both core.filemode and core.ignorecygwinfstricks, perhaps keeping the config reader as is (this includes not falling back to git_default_config()) and instead doing: static int init_stat(void) { ... git_config(git_sygwin_config, NULL); if (!core_filemode && native_stat) { cygwin_stat_fn = cygwin_stat; cygwin_lstat_fn = cygwin_lstat; } else { cygwin_stat_fn = stat; cygwin_lstat_fn = lstat; } ... is less yucky? -- 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