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.filemode
est 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-log
ne montre aucune sortie du tout, pour aucune combinaison de master
, dev-branch
ou HEAD
(ce qui est étrange, n'est-ce pas? La commande ne devrait-elle pas imprimer le dernier message de validation de master
?)