首先,我承认我使用的Cygwin
版本很老,1.5.24(使用uname -r
显示)。如果你在Cygwin
下使用git
没有遇到我的问题,那很好,恭喜你。
由于Cygwin
的版本很老,它自带的git
版本就更不用说了,所以我都是自己编译的。随便用用没什么,后来用了自己搭建的gitorious,发现push上去后在别处clone,执行文件的执行属性都不见了。研究发现,原来是在.git/config
文件中core.filemode
设置为false
,意味着权限都被忽略了。
简单但略微繁琐的解决方法是(无论使用git init
还是git clone
)每次创建新的git repository,都不要忘记执行
$ git config core.filemode true
或者修改git
根目录下的Makefile
,然后重新编译。修改很简单(此处以git 1.7.2.1为例),即注释掉Makefile:889
行,
# NO_TRUSTABLE_FILEMODE = UnfortunatelyYes