[英]Saving files with Windows programs makes Git in Cygwin track filemode changes
我目前正在使用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
并没有停止ls -l
从Windows更新文件后将它们显示为可执行文件。
这两种方法似乎是可行的:
使Cygwin即使在Windows中更新后,也保留现有文件上的原始x
位。
将Git配置为仅对现有文件忽略文件模式更改 。 我真的想在添加Unix可执行文件时保存x
标志,这就是为什么git config core.fileMode false
不是解决方案的原因 。 这会将所有文件另存为不可执行。 (很抱歉,但是在进行研究时,我从人们那里读了太多文章,高兴地放弃了所有x
位信息,并认为这是一个解决方案)
两种方法的解决方案是什么? 实际上,我更喜欢第一种,因为它感觉更干净。
更新:由于我开始使用Komodo Edit而不是Geany文件,因此不再使用x
位。 显然,不同的Windows程序保存文件之间存在一些差异。 尽管我认为Geany也必须有解决方案,但这对我来说几乎可以解决问题。
我在这里看到2种情况
+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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.