Am 25.06.2013 00:10, schrieb Junio C Hamano:
Mark Levedahl [off-list ref] writes:
quoted
On 06/22/2013 03:38 PM, Ramsay Jones wrote:
quoted
Also, apart from running the git test-suite, I have the Win32
l/stat functions disabled on all of my repos. In particular, I have
core.filemode set to true. (At one point, I used to build git with
NO_TRUSTABLE_FILEMODE reset so that I wouldn't have to remember to
reset core.filemode by hand after a git-clone or git-init). I should
also note that I run MinGW git on the same laptop and, using git.git
as an example, it does not seem that much faster (if at all) than
cygwin git.
After applying your patch to master, I've had the test-suite running
in a VM using WinXP + current cygwin (v1.7.x) for about 8 hours, no
failures so far but it could take another day to complete.
I never found any real speed up using the Win32 stat/lstat functions,
and the lack of Posix compatibility breaking cross-platform projects,
links, etc., made this function a mis-feature in my opinion for
years. As I found no positive benefit from the Win32 lstat, I modified
git for local use years ago to set core.filemode=true when cloning /
initing to avoid as many issues as possible.
So that's two votes to use the vanilla Cygwin stat/lstat,
essentially reverting adbc0b6b (cygwin: Use native Win32 API for
stat, 2008-09-30), which was added by Dmitry and Shawn while I was
away.
Let's wait and see if people give us more data points and decide.
That'll be more productive if we let the list know ;-)
Some context: This is about a patch by Ramsay that removes the
"schizophrenic lstat" hack for Cygwin. Junio, can you please queue that
patch in pu?
-- Hannes
On 25.06.13 21:23, Johannes Sixt wrote:
Am 25.06.2013 00:10, schrieb Junio C Hamano:
quoted
Mark Levedahl [off-list ref] writes:
quoted
On 06/22/2013 03:38 PM, Ramsay Jones wrote:
quoted
Also, apart from running the git test-suite, I have the Win32
l/stat functions disabled on all of my repos. In particular, I have
core.filemode set to true. (At one point, I used to build git with
NO_TRUSTABLE_FILEMODE reset so that I wouldn't have to remember to
reset core.filemode by hand after a git-clone or git-init). I should
also note that I run MinGW git on the same laptop and, using git.git
as an example, it does not seem that much faster (if at all) than
cygwin git.
After applying your patch to master, I've had the test-suite running
in a VM using WinXP + current cygwin (v1.7.x) for about 8 hours, no
failures so far but it could take another day to complete.
I never found any real speed up using the Win32 stat/lstat functions,
and the lack of Posix compatibility breaking cross-platform projects,
links, etc., made this function a mis-feature in my opinion for
years. As I found no positive benefit from the Win32 lstat, I modified
git for local use years ago to set core.filemode=true when cloning /
initing to avoid as many issues as possible.
So that's two votes to use the vanilla Cygwin stat/lstat,
essentially reverting adbc0b6b (cygwin: Use native Win32 API for
stat, 2008-09-30), which was added by Dmitry and Shawn while I was
away.
Let's wait and see if people give us more data points and decide.
That'll be more productive if we let the list know ;-)
Some context: This is about a patch by Ramsay that removes the
"schizophrenic lstat" hack for Cygwin. Junio, can you please queue that
patch in pu?
-- Hannes
Here some benchmarks:
Clone the linux kernel from August 2012 (which was "in house") to the windows box,
2.3 GhZ Core duo.
Run with and without core.filemode, which triggers cygwinfstricks (and is shorter to type)
Numbers are typical "hot cache", cold cache is 6..8 seconds "real"
$ git --version
git version 1.8.3.1.g6f17ca7
__________________________________
$ time git -c core.filemode=true status -uno
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: include/linux/netfilter/xt_CONNMARK.h
# modified: include/linux/netfilter/xt_DSCP.h
# modified: include/linux/netfilter/xt_MARK.h
# modified: include/linux/netfilter/xt_RATEEST.h
# modified: include/linux/netfilter/xt_TCPMSS.h
# modified: include/linux/netfilter_ipv4/ipt_ECN.h
# modified: include/linux/netfilter_ipv4/ipt_TTL.h
# modified: include/linux/netfilter_ipv6/ip6t_HL.h
# modified: net/netfilter/xt_DSCP.c
# modified: net/netfilter/xt_HL.c
# modified: net/netfilter/xt_RATEEST.c
# modified: net/netfilter/xt_TCPMSS.c
#
no changes added to commit (use "git add" and/or "git commit -a")
real 0m2.313s
user 0m0.577s
sys 0m1.765s
------------------------------------------------------
tb@snoopy ~/projects/linux-2.6
$ time git -c core.filemode=false status -uno
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: include/linux/netfilter/xt_CONNMARK.h
# modified: include/linux/netfilter/xt_DSCP.h
# modified: include/linux/netfilter/xt_MARK.h
# modified: include/linux/netfilter/xt_RATEEST.h
# modified: include/linux/netfilter/xt_TCPMSS.h
# modified: include/linux/netfilter_ipv4/ipt_ECN.h
# modified: include/linux/netfilter_ipv4/ipt_TTL.h
# modified: include/linux/netfilter_ipv6/ip6t_HL.h
# modified: net/netfilter/xt_DSCP.c
# modified: net/netfilter/xt_HL.c
# modified: net/netfilter/xt_RATEEST.c
# modified: net/netfilter/xt_TCPMSS.c
#
no changes added to commit (use "git add" and/or "git commit -a")
real 0m1.047s
user 0m0.311s
sys 0m0.765s
/Torsten