Vous venez de transformer un fichier some.sh
en un exécutable (chmod 755 ...
), les autorisations ont été mises à jour, mais pas le contenu. Existe-t-il un moyen de valider le fichier dans git, de sorte que le bit exécutable soit restauré/défini sur le clone / checkout / tirer ?
pdate: Comment puis-je savoir si les nouvelles autorisations ont été soumises à github
?
Par défaut, git mettra à jour les permissions des fichiers d'exécution si vous les modifiez. Cela ne changera ni ne suivra aucune autre permission.
Si vous ne voyez aucun changement lors de la modification de l'autorisation d'exécution, vous avez probablement une configuration dans git qui ignore le mode fichier.
Regardez dans votre projet, dans le dossier .git
pour le fichier config
et vous devriez voir quelque chose comme ceci:
[core]
filemode = false
Vous pouvez soit le changer en true
dans votre éditeur de texte préféré, soit exécuter:
git config core.filemode true
Ensuite, vous devriez être capable de valider normalement vos fichiers. Il ne fera que valider les modifications d'autorisation.
L'article de @fooMonster a fonctionné pour moi
# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh
Comme vous pouvez le voir, le fichier a une permission 644 (en ignorant les 100). Nous aimerions le changer en 755:
# git update-index --chmod=+x script.sh
commettre les modifications
# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh
Ne travaille pas pour moi.
Le mode est vrai, les permanentes de fichiers ont été changées, mais git dit qu'il n'y a pas de travail à faire.
git init
git add dir/file
chmod 440 dir/file
git commit -a
Le problème semble être que git ne reconnaît que certains changements de permissions.