78 votes

Puis-je faire que git diff ignore les modifications des permissions

Je modifie sans le vouloir les autorisations de tout mon arbre et ne valide que ce changement avec d'autres modifications de contenu.

J'utilise quelque chose comme:

 tar -czf deploy.tar git diff --name-only v1 v2 

pour générer un fichier tar contenant les fichiers modifiés entre deux balises, le problème est qu’à présent, à cause des autorisations, presque tout mon arbre est répertorié comme modifié.

Existe-t-il un moyen de dire à git diff d'ignorer ces fichiers que les autorisations ont été modifiées?

162voto

Daniel Stutzbach Points 20026

Cela dira à git d'ignorer les permissions:

 git config core.filemode false
 

13voto

Alan Thompson Points 325

J'ai eu ce problème après intentionnellement retrait de l'autorisation d'exécution de fichiers de code source (~26K fichiers). Ensuite, git diff dit que tous les fichiers ont changé! La réponse avec le noyau.filemode ne m'aide pas car qui n'affecte que les diffs à l'encontre de votre travail dir, pas de diff contre 2 s'engage dans le repo.

La réponse a été d'utiliser le (grand effrayant) filtre-direction de la commande. En particulier, tout ce que vous devez est de type:

git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all

à partir de la racine de votre travail dir. Bien sûr, assurez-vous de faire une copie de votre repo première (cp-pr ~/repo.git ~/repo-orig.git ou similaire), dans le cas où vous avez besoin de re-essayer.

Profitez-en!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X