Sous Ubuntu et Debian, les derniers fichiers validés obtiennent le bit d'exécution défini, lorsque j'essaie une vérification par la suite. C'est assez étrange et ça me rend dingue:
$ ls -l file
-rw-r--r-- ... file
# on branch master:
$ git commit -m 'mode is 644' file
[master 0123456] mode is 644
1 files changed, 1 insertions(+), 1 deletions(-)
# All ok
$ git checkout dev-branch
Switched to branch 'dev-branch'
# Seemingly all ok, but file now has the exec bit set
$ git merge master
Updating 6543210..0123456
error: Your local changes to 'file' would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.
# Oops...
$ ls -l file
-rwxr-xr-x ... file
Quelqu'un at-il une idée, quand et pourquoi le bit d'exécution se glisse? core.filemodeest défini sur true.
J'ai le fichier ouvert dans vim pendant le changement de branche, si c'est important d'une manière ou d'une autre.
Addendum 1: C'est la caisse, où les autorisations sont vissées. Je peux jouer au jeu indéfiniment:
$ git br
* master
dev-branch
$ git diff
diff --git a/file b/file
old mode 100644
new mode 100755
$ chmod 644 file
$ git diff
$ git checkout dev-branch
$ git diff
diff --git a/file b/file
old mode 100644
new mode 100755
$ chmod 644 file
$ git diff
$ git checkout master
$ git diff
diff --git a/file b/file
old mode 100644
new mode 100755
# ...and so on ad inf.
Addendum 2: Cela se produit, en passant, pour chaque fichier dans ce référentiel, que je valide. Après la validation réussie, je ne peux pas changer de branche sans la permission.
git-logne montre aucune sortie du tout, pour aucune combinaison de master, dev-branchou HEAD(ce qui est étrange, n'est-ce pas? La commande ne devrait-elle pas imprimer le dernier message de validation de master?)