文件模式在msysgit中的应用

7
我使用msysgit(v1.7.7)在网络驱动器上从Windows克隆了一个Git存储库。 该存储库中的某些文件标记为具有100755权限模式。
在Windows上使用git bash工具,ls -l命令有效显示了这些文件的正确权限。 现在,当我从Linux访问存储库目录时,这些文件的权限变成了644,而不是755。
如果我在Linux侧将它们chmod为755并回到Windows上的git bash工具:
  • ls -l 命令仍然显示文件具有755权限
  • git diff 命令告诉我们文件的模式从100755更改为100644
有任何关于如何在Windows上使用msysgit正确处理文件模式的想法吗?
我在msysgit上找到了此问题,与我的问题相对应http://code.google.com/p/msysgit/issues/detail?id=164。 我尝试了提出的提示git update-index --chmod=+x代码,但没有任何变化。
2个回答

14

mingw不像Linux那样支持文件模式。据我了解,它遵循Windows扩展支持,即 .exe 将具有 +x 位。但是 chmod 没有任何作用。

所以,对于 Git,你应该指定 git config core.filemode false 来禁用 mingw 中的文件模式支持。如果需要更改它,则应在 Linux 下进行操作。

然而,也许我错了,但据我记得 cygwin 支持文件模式。你可以尝试使用它代替 mingw。


1
在存在本地.git/config文件并指定了 filemode=true(从而覆盖全局配置)的情况下,您可以将 -c core.filemode=false 添加到命令中。然而,如果通过脚本运行 git,因此无法控制命令行参数,则我找不到任何环境变量可用于实现相同的功能。 - Brian White

0
一个非常古老的问题,但仍然相关。直到5分钟前我才遇到了同样的问题,直到我意识到了- shebang!这是导致文件在git-bash中可执行的原因!
观察:
~$ cd /tmp

/tmp$ touch 1.sh

/tmp$ ls -l 1.sh
-rw-r--r-- 1 P11F70F 1049089 0 Apr 22 12:55 1.sh

/tmp$ chmod 755 1.sh

/tmp$ ls -l 1.sh
-rw-r--r-- 1 P11F70F 1049089 0 Apr 22 12:55 1.sh

/tmp$ echo '#!/usr/bin/env bash' > 1.sh

/tmp$ ls -l 1.sh
-rwxr-xr-x 1 P11F70F 1049089 20 Apr 22 12:56 1.sh

/tmp$

chmod 755 没有帮助,但是当我添加了 shebang 行后,文件 1.sh 就变成可执行文件了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接