Обновление разрешений файлов с помощью git - bash в Windows 7

Как обновить права доступа к файлам с помощью git-bash в Windows 7?

Я пробовал следующее без успеха:

$ ls -al scripts/script.sh
-rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh

$ git update-index --chmod=+x scripts/script.sh

$ ls -al scripts/script.sh
-rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh

$ chmod +x scripts/script.sh

$ ls -al scripts/script.sh
-rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh

Ответ 1

Вероятно, вы используете NTFS или FAT32 в Windows, и эти файловые системы не поддерживают разрешение на выполнение. Вместо этого cygwin просматривает имя и содержимое файла, чтобы определить, является ли он исполняемым:

Файлы считаются исполняемыми, если имя файла заканчивается на .bat,.com или .exe или если его содержимое начинается С#!.

Итак, вы должны убедиться, что файл bash начинается с shebang (например, #!/bin/bash). Затем вы сможете просто выполнить файл, не считая вывода разрешения ls.

Ответ 2

Если вы обновляете сценарии в среде Windows, которые развертываются в файловой системе Linux, даже если им разрешено работать локально, вам все равно может потребоваться предоставить команду execute до нажатия.

Из этой статьи Измените права доступа к файлам при работе с git repo в Windows:

  1. Откройте терминал bash, например, git-bash в Windows
  2. Перейдите к файлу .sh, где вы хотите предоставить разрешения на выполнение
  3. Проверьте существующие разрешения с помощью следующей команды:

    git ls-files --stage 
    

    Который должен возвращать что-то вроде 100644

  4. Обновите разрешения с помощью следующей команды

    git update-index --chmod=+x 'name-of-shell-script'
    
  5. Проверьте разрешение файла еще раз

    git ls-files --stage 
    

    Который должен вернуть что-то вроде 100755

  6. Внесите изменения и нажмите!

git bash on windows