web-dev-qa-db-fra.com

Autorisations de fichiers Git sous Windows

J'ai lu quelques questions sur les autorisations de fichiers dans Git et je suis encore un peu confus. J'ai un repo sur GitHub fourni par un autre. Après la fusion, ils devraient être identiques. Toutefois:

$ git diff --summary Origin/epsilon master/epsilon
 mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee
 mode change 100644 => 100755 ants/util/block_test.sh
 mode change 100644 => 100755 manager/mass_skill_update.py
 mode change 100644 => 100755 worker/jailguard.py
 mode change 100644 => 100755 worker/release_stale_jails.py
 mode change 100644 => 100755 worker/start_worker.sh

J'ai essayé de modifier les autorisations de fichiers, mais cela ne modifie pas les résultats de diff.

135
Synesso

J'ai trouvé la solution pour changer les permissions (aussi) sur Windows ici: http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

Par exemple, la commande suivante ajoute l’autorisation d’exécution de l’utilisateur à un fichier arbitraire:

git update-index --chmod=+x <file>
260
dedek

Une autre question ici sur stackoverflow: Comment puis-je faire en sorte que Git ignore les modifications du mode de fichier (chmod)?

Essayer:

git config core.filemode false

De git-config (1) :

   core.fileMode
       If false, the executable bit differences between the index and the
       working copy are ignored; useful on broken filesystems like FAT.
       See git-update-index(1). True by default.
85
Corey Henderson

One-Liner pratique pour Git Bash:

find . -name '*.sh' | xargs git update-index --chmod=+x

Tous les fichiers .sh seront marqués comme exécutables . Après cela, il vous suffira de git commit.

27
Benoit Blanchon

Si vous utilisez Cygwin git (ou Linux git aussi, je suppose), il y a de bonnes chances que votre paramètre core.filemode ait été défini au niveau du projet dans $ projdir/.git/config. J'ai constaté que je devais faire ce qui suit pour que mon git Cygwin et mon git Windows coexistent bien sur un système de fichiers Windows sans que des changements inexistants en mode de fichier n'apparaissent tout le temps:

  • supprimer le paramètre de ligne core.filemode dans $ projdir/.git/config
  • dans Windows git, exécutez "git config --global core.filemode false"

Cela permet à mon git Cygwin de continuer à voir les modifications de filemode, qui sont généralement pertinentes, tout en demandant au git Windows d’ignorer les modifications de filemode qu’il voit, qui sont généralement des faux positifs.

8
skiphoppy

Je l'ai corrigé en changeant les permissions de fichiers dans Ubuntu, commit, Push et tout OK On dirait que cela ne fonctionnerait pas avec msysgit sous Windows/NTFS.

5
Synesso

Vérifiez d'abord les autorisations.

git ls-files --stage

Puis changez les permissions

git update-index --chmod=+x 'scriptname.ext'

Maintenant, vérifiez à nouveau les autorisations.

git ls-files --stage

0
Sireesh Yarlagadda