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.
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>
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.
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
.
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:
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.
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.
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