Ich habe ein Vorab-Skript für git erstellt, das funktioniert, wenn es über die Befehlszeile ausgeführt wird. Hier ist das Skript:
%Vor%Ich würde mir wünschen, dass das Vorab-Commit auch über die GitHub-Client-Anwendung funktioniert, aber das funktioniert nicht. Das Vorab-Commit-Skript wird ausgeführt, es wird jedoch ein Fehler ausgegeben. Hier ist der vollständige Text, den er im Client-Alarmfenster zurückgibt:
%Vor%Aus irgendeinem Grund ist es nicht in der Lage, grunzen zu finden. Ich habe den grunt cli erneut installiert und die globale '-g'-Flagge verwendet, aber das machte keinen Unterschied. Irgendwelche Ideen, wie ich den Kunden dazu bringen kann, grunzen zu finden?
GUI apps unter OS X laden die Sachen nicht in .bashrc / .bash_profile, was bedeutet, dass sie keine benutzerdefinierten $ PATH-Zusätze wie /usr/local/bin
haben, wo sich die grunt-Binärdatei befindet. Sie können entweder den vollständigen Pfad angeben oder den $ PATH in Ihrem Pre-Commit-Hook fixieren, indem Sie diesen nach den Top-Kommentaren hinzufügen: PATH="/usr/local/bin:$PATH"
Wenn Sie Quellcode (auf Mac) verwenden und Pre-Commit- und Pre-Push-Hooks haben, öffnen Sie SourceTree mit der Befehlszeile, anstatt sie direkt mit dem folgenden Befehl zu öffnen.
%Vor%Jetzt werden deine Hooks funktionieren, wenn du versuchst Commit und Push zu machen. Ich bin mir sicher, dass es auch für die github App funktioniert.
Wenn Sie ein Skript ausführen möchten, das Ihre Umgebung abruft ( $PATH
, etc), sollten Sie die erste Zeile Ihres Skripts ändern:
zu:
%Vor% Rufen Sie dann grunt
ohne den fest codierten Pfad auf.
Wenn sich der Pfad zu Ihrer ausführbaren Datei in der Zukunft ändert oder auf anderen Computern anders ist, funktioniert das Skript weiterhin. /usr/bin/env
ruft die Umgebung des Benutzers ab, in dem das Skript ausgeführt wird. Dies ist sehr hilfreich an Orten, wo einige Leute verschiedene Paketmanager verwenden, aber dieselben Skripte ausführen müssen. Andernfalls könnten Sie mit einer Menge Logik auf der Suche nach Anwendungen sein, die vermieden werden könnten, indem Sie von einem korrekt bevölkerten $PATH
abhängen.
Sindre Sorhus 'ausgezeichnete Antwort:
GUI apps unter OS X lädt die Sachen nicht in .bashrc / .bash_profile, was bedeutet, dass sie keine benutzerdefinierten $ PATH-Zusätze wie
/usr/local/bin
, wo sich die grunt-Binärdatei befindet. Du kannst entweder Geben Sie den vollständigen Pfad an oder fixieren Sie $ PATH in Ihrem Pre-Commit-Hook, indem Sie Hinzufügen nach den Top-Kommentaren:PATH="/usr/local/bin:$PATH"
In meinem Fall funktionierte das nicht, weil ich Node Version Manager verwende, der verschiedene Versionen von Node speichert und es einfach macht um Knotenversionen zu aktualisieren und zu wechseln. Es speichert Ihre Knotenmodule für jede Knotenversion in einer separaten Datei. Hier ist der Code, mit dem ich dieses Problem umgehen konnte:
%Vor%Dies prüft auf NVM und lädt, falls vorhanden, den Pfad zu den Knotenmodulen für die aktuell verwendete Version von Node.
Tags und Links git gruntjs github github-for-mac unix