web-dev-qa-db-fra.com

Mise à jour des autorisations de fichiers avec git-bash sur Windows 7

Comment mettre à jour les autorisations de fichier avec git-bash sur Windows 7?

J'ai essayé ce qui suit sans succès:

$ 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
28
blueberryfields

Vous utilisez probablement NTFS ou FAT32 sous Windows, et ces systèmes de fichiers ne prennent pas en charge l'autorisation exécutable . Au lieu de cela, cygwin examine le nom et le contenu du fichier pour déterminer s'il est exécutable :

Les fichiers sont considérés comme exécutables si le nom de fichier se termine par .bat, .com ou .exe, ou si son contenu commence par # !.

Vous devez donc vous assurer que le fichier bash commence par un Shebang (par exemple #!/bin/bash). Ensuite, vous devriez pouvoir simplement exécuter le fichier, sans tenir compte de la sortie d'autorisation de ls.

46
Yogu

Si vous mettez à jour des scripts dans un environnement Windows qui sont déployés sur un système de fichiers Linux, même s'ils sont autorisés à s'exécuter localement, vous devrez peut-être toujours accorder l'exécution avant de pousser.

De cet article sur Modifier les autorisations de fichier lorsque vous travaillez avec git repo sur Windows :

  1. Ouvrez un terminal bash comme git-bash sous Windows
  2. Accédez au .sh fichier dans lequel vous souhaitez accorder des autorisations d'exécution
  3. Vérifiez les autorisations existantes avec la commande suivante:

    git ls-files --stage 
    

    Ce qui devrait renvoyer quelque chose comme 100644

  4. Mettez à jour les autorisations avec la commande suivante

    git update-index --chmod=+x 'name-of-Shell-script'
    
  5. Vérifiez à nouveau l'autorisation de fichier

    git ls-files --stage 
    

    Qui devrait retourner quelque chose comme 100755

  6. Validez les modifications et appuyez!

git bash on windows

4
KyleMit