[英]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.