Unter Ubuntu und Debian wird für die letzten festgeschriebenen Dateien das Ausführungsbit gesetzt, wenn ich danach einen Checkout versuche. Es ist ziemlich seltsam und macht mich verrückt:
$ 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
Hat jemand eine Idee, wann und warum das Ausführungsbit hineinschlüpft? core.filemodeist auf eingestellt true.
Ich habe die Datei während des Zweigwechsels in vim geöffnet, wenn das irgendwie wichtig ist.
Nachtrag 1: Es ist die Kasse, an der die Berechtigungen vermasselt werden. Ich kann das Spiel immer weiter spielen:
$ 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.
Anhang 2: Dies geschieht übrigens für jede Datei in diesem Repository, die ich festschreibe. Nach dem erfolgreichen Festschreiben kann ich die Zweige nicht ohne die Erlaubnis wechseln.
git-logzeigt überhaupt keine Ausgabe, denn weder Kombination master, dev-branchoder HEAD(? das seltsam ist, ist nicht es sollte nicht der Befehl druckt die letzten Commit - Nachricht aus master?)