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
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
.
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 :
.sh
fichier dans lequel vous souhaitez accorder des autorisations d'exécutionVérifiez les autorisations existantes avec la commande suivante:
git ls-files --stage
Ce qui devrait renvoyer quelque chose comme 100644
Mettez à jour les autorisations avec la commande suivante
git update-index --chmod=+x 'name-of-Shell-script'
Vérifiez à nouveau l'autorisation de fichier
git ls-files --stage
Qui devrait retourner quelque chose comme 100755
Validez les modifications et appuyez!