Comment modifier le Mode fichier sur GitHub?

$ git add test-file

$ git commit -m 'first commit'
 create mode 100644 test-file

$ git push

$ git update-index --add --chmod=+x test-file

$ git commit -m 'change mode'
 mode change 100644 => 100755 test-file

$ git push

après cela si vous allez à GitHub il montre toujours comme 100644 quoi qu'il arrive.

34
demandé sur Steven Penny 2012-01-27 04:40:02

2 réponses

MSYS n'est pas le problème. Même si MSYS chmod ne fonctionne pas (il ne marche pas), Git a construit dans le moyen de contourner le problème, c'est à dire git update-index --chmod=+x. Que ce soit clair que git update-index ne modifie que l'index (staging area), pas le dépôt local (working directory).

je suis convaincu que le problème est avec GitHub. Sur GitHub si un fichier est d'abord poussé en mode 100775, tout va bien. Si un fichier est d'abord poussé comme 100644 il les causes d'un problème. Les tentatives de modification du mode file réussiront avec git add, réussir avec git commit, réussir avec git push, et même de le montrer dans le GitHub de l'historique des fichiers, mais être reflétée sur la page" blob/master " sur GitHub.

mise à Jour

À Partir De: Petros Amiridis (GitHub Personnel)

sujet: Comment changer le Mode de fichier sur GitHub?

j'ai de bonnes nouvelles. Notre super équipe vient de confirmer qu'il s'agit d'une Cache bogue sur notre fin. Notre équipe a déployé une solution.

29
répondu Steven Penny 2016-11-04 14:26:13

je pense que le problème est que MSYS, sur lequel L'implémentation Windows de git est basée, ne gère pas chmod correctement.

(EDIT: L'autre réponse, dit-MSYS n'est pas le problème, ce qui semble plausible.)

Ma conjecture est que la commande

git update-index --add --chmod=+x test-file

fonctionne en mettant à jour les métadonnées dans le dépôt local (ce qui devrait fonctionner) et en modifiant les permissions sur le fichier (ce qui ne fonctionne pas), en mettant le dépôt local dans un état incohérent.

vous devriez être en mesure de revenir en arrière en défaisant le update-index:

git update-index --add --chmod=-x test-file
git commit -m 'change mode back'
git push

pour remettre le dépôt dans un état cohérent, puis faire le changement dans une copie non-Windows du dépôt. Si vous n'avez pas accès à Linux ou à un autre système de type Unix, Cygwin comprend git (pas par défaut, mais vous pouvez l'installer via setup.exe) et vous donne un environnement dans lequel chmod fonctionne réellement. Le shell par défaut pour Cygwin est bash, donc l'environnement devrait être familier si vous avez utilisé git bash.

le fichier ne sera toujours pas exécutable lorsque vous le regardez depuis le shell git bash, mais il devrait apparaître comme 100755 dans l'interface web GitHub.

11
répondu Keith Thompson 2013-06-12 19:48:51