我目前正在使用Cygwin,Cygwin中的Git和Windows下的Windows编辑器进行开发。从本机Windows程序保存文件使得文件在Cygwin中可执行是非常烦人的。我想跟踪文件模式,因为我们有Unix可执行文件但是从Windows更新文件只是改变现有模式。在第一次提交文件之前,我接受在Cygwin中设置一次filemode。
我读过https://cygwin.com/cygwin-ug-net/using-filemodes.html但我在NTFS上,我不知道ACL会如何影响文件权限。将noacl
添加到/etc/fstab
之后,在从Windows更新文件后,不会将ls -l
显示为可执行文件。
这两种方法似乎是可能的:
即使从Windows更新后,使Cygwin仍保留现有文件的原始x
位。
将Git配置为仅针对已存在的现有文件忽略filemode 更改。我真的想在添加Unix可执行文件时保存x
标志,这就是为什么git config core.fileMode false
不是解决方案的原因。这会将所有文件保存为不可执行文件。 (很抱歉所有的重点,但在做研究时,我从人们那里读了太多文章,很乐意丢弃所有x
位信息,并认为这是一个解决方案)
这两种方法的解决方案是什么?我实际上更喜欢第一个,因为它感觉更干净。
更新:由于我开始使用Komodo Edit而不是Geany文件,因此不再获取x
位。显然,保存文件的不同Windows程序之间存在一些差异。这几乎解决了我的问题,虽然我认为Geany也必须有解决方案。
答案 0 :(得分:0)
我在这里看到两种情况
+x
,忽略更改+x
,提交更改要做1,我在~/.bashrc
中有这段代码。 ~/.bash_profile
也应该有用
PROMPT_COMMAND='
if [ -d .git ]
then
if [ ! -g .git/config ]
then
git config core.filemode 0
chmod +s .git/config
fi
fi
'
然后做2,我有一个执行此操作的脚本
git update-index --skip-worktree --chmod=+x hello-world.sh
git update-index --no-skip-worktree hello-world.sh
像这样跑
git chmod.sh hello-world.sh
How do I make git accept mode changes without accepting all text changes?