Warum ist mein Git Pre-Commit Hook standardmäßig nicht ausführbar?

7

Wenn Sie die akzeptierte Antwort sehen in: Aggregieren und Verändern von Javascript in einem git pre-commit hook , du wirst sehen, dass ich ein chmod +x auf meinem Pre-Commit-Hook machen musste, um es zum Laufen zu bringen.

Warum ist dies nicht standardmäßig von Git ausführbar?

    
Josh Smith 22.12.2011, 01:55
quelle

2 Antworten

17

Weil Dateien standardmäßig nicht ausführbar sind; Sie müssen als ausführbar festgelegt werden.

Die Beispieldateien von git init sind ausführbar. Wenn es in eine Nicht-Beispieldatei kopiert oder umbenannt wird, behält es das x -Flag der ursprünglichen Datei bei.

Neue Dateien werden mit den aktuellen Standardeinstellungen erstellt. In Ihrem Fall sehen Sie diese Voreinstellungen mit umask :

%Vor%

Standardmäßig sind neue Dateien nicht u+x , es sei denn, dies ist explizit festgelegt.

    
Dave Newton 22.12.2011, 02:05
quelle
2
  

Ich musste einen chmod +x auf meinem Pre-Commit-Hook machen, damit es funktioniert

Das Problem ist zu erkennen, dass es überhaupt nicht ausführbar war.
Mit Git 2.15.x / 2.16 (Q1 2018) wird das einfacher.

Siehe committe f805a00 (06. Okt. 2017) von Damien Marié ( mdamien ) .
(Zusammengeführt von Junio ​​C Hamano - gitster - - in commit 130b512 , 06 Nov. 2017)

  

run-command : Hinweis hinzufügen, wenn ein Hook ignoriert wird

     

Wenn ein Hook vorhanden ist, aber die Datei nicht als ausführbar festgelegt ist, wird git dies tun   Ignoriere den Haken.
Momentan ist das still, was verwirrend sein kann .

     

Dieses Commit fügt diese Warnung hinzu, um die Situation zu verbessern:

%Vor%
  

Um den alten Anwendungsfall der Aktivierung / Deaktivierung von Hooks über das ausführbare Flag zu ermöglichen, wird eine neue Einstellung eingeführt: advice.ignoredHook .

    
VonC 07.11.2017 20:31
quelle

Tags und Links