簡體   English   中英

使用Windows程序保存文件使Cygwin中的Git跟蹤文件模式更改

[英]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更新文件后將它們顯示為可執行文件。

這兩種方法似乎是可行的:

  1. 使Cygwin即使在Windows中更新后,也保留現有文件上的原始x位。

  2. 將Git配置為僅對現有文件忽略文件模式更改 我真的想在添加Unix可執行文件時保存x標志,這就是為什么git config core.fileMode false 不是解決方案的原因 這會將所有文件另存為不可執行。 (很抱歉,但是在進行研究時,我從人們那里讀了太多文章,高興地放棄了所有x位信息,並認為這是一個解決方案)

兩種方法的解決方案是什么? 實際上,我更喜歡第一種,因為它感覺更干凈。

更新:由於我開始使用Komodo Edit而不是Geany文件,因此不再使用x位。 顯然,不同的Windows程序保存文件之間存在一些差異。 盡管我認為Geany也必須有解決方案,但這對我來說幾乎可以解決問題。

我在這里看到2種情況

  1. 本地更改為+x ,忽略更改
  2. 本地更改為+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

.bashrc

git-chmod.sh

git忽略gitconfig?

如何在不接受所有文本更改的情況下使git接受模式更改?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM