web-dev-qa-db-fra.com

Git n'ignore pas les changements de mode de fichier (chmod), pourquoi?

Avant de commencer, je dois dire que j'ai déjà regardé ce post et celui-ci aussi, mais pour une raison quelconque, les solutions fournies ne fonctionnent pas pour moi. Mon référentiel est sous ~/sources, donc chaque commande a été exécutée à partir de ce chemin. Voici ce que j'ai fait:

Changez le filemode en faux:

$ git config --global core.filemode false

Vérifier la configuration globale:

$ git config --list
...
core.filemode=false
core.repositoryformatversion=0
core.bare=false
core.logallrefupdates=true
...

Réinitialiser le référentiel:

$ git init
Reinitialized existing Git repository in /home/rperez/sources/.git/

Vérifiez ce qui doit être ajouté | engagé:

$ git status

Et je reçois une liste contenant tous les fichiers du référentiel. 

J'utilise:

$ git --version
git version 2.9.3

UPDATE: ajout du git diff pour deux fichiers différents

$ git status
...
    modified:   testing/test-valid-swasset-update.php
...
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    library/mpdf60/ttfontdata/dejavusanscondensedI.GDEFdata.php
...

git diff sortie des fichiers ci-dessus:

$ git diff testing/test-valid-swasset-update.php
diff --git a/testing/test-valid-swasset-update.php b/testing/test-valid-swasset-update.php
old mode 100755
new mode 100644

Qu'est-ce qui me manque ici?

12
ReynierPM

La configuration locale remplace les paramètres de configuration globaux

La sortie diff dans la question indique que la configuration local git a filemode défini sur true. C'est probablement le comportement attendu puisque la configuration par défaut créée pour un référentiel définit ceci:

-> git init
Initialized empty Git repository in /tmp/foo/.git/
-> cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true

Changer la configuration globale pour filemode n'affecte pas cela, donc git config --global core.filemode false ne fait rien parce que cela est toujours remplacé localement.

Par conséquent, pour changer le mode de fichier pour ce référentiel, changez la configuration locale:

$ git config core.filemode false
$ git config core.filemode
false

Étant donné cette question/réponse il y a une possibilité que cela soit supposé fonctionner, bien que ce ne soit pas le cas pour moi.

17
AD7six

Vous pouvez vérifier quel est le réglage local avec ceci: Git config --local --list

... et définissez une valeur locale comme celle-ci:

git config --local core.filemode false

0
Randy Leberknight