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

时间:2014-11-13 10:10:01

标签: windows git cygwin file-permissions git-config

我目前正在使用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显示为可执行文件。

这两种方法似乎是可能的:

  1. 即使从Windows更新后,使Cygwin仍保留现有文件的原始x位。

  2. 将Git配置为仅针对已存在的现有文件忽略filemode 更改。我真的想在添加Unix可执行文件时保存x标志,这就是为什么git config core.fileMode false 不是解决方案的原因。这会将所有文件保存为不可执行文件。 (很抱歉所有的重点,但在做研究时,我从人们那里读了太多文章,很乐意丢弃所有x位信息,并认为这是一个解决方案)

  3. 这两种方法的解决方案是什么?我实际上更喜欢第一个,因为它感觉更干净。

    更新:由于我开始使用Komodo Edit而不是Geany文件,因此不再获取x位。显然,保存文件的不同Windows程序之间存在一些差异。这几乎解决了我的问题,虽然我认为Geany也必须有解决方案。

1 个答案:

答案 0 :(得分:0)

我在这里看到两种情况

  1. 在本地更改为+x,忽略更改
  2. 在本地更改为+x,提交更改
  3. 要做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 ignoring gitconfig?

    How do I make git accept mode changes without accepting all text changes?