From: Mark Levedahl <mlevedahl@gmail.com>
To: spearce@spearce.org, dpotapov@gmail.com
Cc: git@vger.kernel.org, Mark Levedahl <mlevedahl@gmail.com>
Subject: [PATCH] compat/cygwin.c - Use cygwin's stat if core.filemode == true
Date: Sat, 11 Oct 2008 15:04:19 -0400 [thread overview]
Message-ID: <1223751859-3540-1-git-send-email-mlevedahl@gmail.com> (raw)
In-Reply-To: <1223751280-2104-1-git-send-email-mlevedahl@gmail.com>
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
set true, regardless of any other considerations.
Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
---
Resend as I mangled Shawn's email address.
Documentation/config.txt | 4 +++-
compat/cygwin.c | 10 +++++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 7161597..a3a9495 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -124,7 +124,9 @@ core.ignoreCygwinFSTricks::
one hierarchy using Cygwin mount. If true, Git uses native Win32 API
whenever it is possible and falls back to Cygwin functions only to
handle symbol links. The native mode is more than twice faster than
- normal Cygwin l/stat() functions. True by default.
+ normal Cygwin l/stat() functions. True by default, unless core.filemode
+ is true, in which case ignoreCygwinFSTricks is ignored as Cygwin's
+ POSIX emulation is required to support core.filemode.
core.trustctime::
If false, the ctime differences between the index and the
diff --git a/compat/cygwin.c b/compat/cygwin.c
index 423ff20..54028b3 100644
--- a/compat/cygwin.c
+++ b/compat/cygwin.c
@@ -91,13 +91,21 @@ static int cygwin_stat(const char *path, struct stat *buf)
* functions should be used. The choice is determined by core.ignorecygwinfstricks.
* Reading this option is not always possible immediately as git_dir may be
* not be set yet. So until it is set, use cygwin lstat/stat functions.
+ * However, if core.filemode is true, we *must* use the Cygwin posix stat as
+ * the Windows stat fuctions do not determine posix filemode.
*/
static int native_stat = 1;
+static int core_filemode = 0;
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;
}
--
1.6.0.2.535.g47d45.dirty
next prev parent reply other threads:[~2008-10-11 19:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-11 18:54 [PATCH] compat/cygwin.c - Use cygwin's stat if core.filemode == true Mark Levedahl
2008-10-11 19:04 ` Mark Levedahl [this message]
2008-10-11 21:34 ` Junio C Hamano
2008-10-11 22:56 ` Mark Levedahl
2008-10-12 13:39 ` Dmitry Potapov
2008-10-12 18:44 ` Mark Levedahl
2008-10-12 19:35 ` Junio C Hamano
2008-10-12 20:23 ` Mark Levedahl
2008-10-12 23:39 ` Junio C Hamano
2008-10-13 4:31 ` Mark Levedahl
2008-10-13 4:33 ` Mark Levedahl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1223751859-3540-1-git-send-email-mlevedahl@gmail.com \
--to=mlevedahl@gmail.com \
--cc=dpotapov@gmail.com \
--cc=git@vger.kernel.org \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).