Es ist sehr seltsam, aber wenn Sie ein Git-Repository einrichten und einen Post-Receive-Hook erstellen mit:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
Der Haken läuft zwar, aber es gelingt ihm nie, Git Pull richtig auszuführen:
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
also frage ich mich jetzt, wie es möglich ist, dass der Hook den Klon mit post-receive aktualisiert?
In diesem Fall ist der Benutzer, der die Prozesse ausführt, derselbe und alles im Benutzerordner, daher verstehe ich das wirklich nicht
cd ~/websites/testing
git pull
es funktioniert problemlos ...
Jede Hilfe dazu wäre sehr dankbar
Danke vielmals
Eine Sache, die ich erlebte, war, dass die Verwendung des
post-update
Hakens '--git-dir' großartig funktionierte, aber git beschwerte sich immer noch über einen fehlenden Arbeitsbaum (trotz der Verwendung von '--work-tree')Kurz gesagt, das hat nicht funktioniert:
git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull
in der Erwägung, dass dies funktioniert hat:
cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull
quelle
Funktioniert das nicht
Bearbeitet
Besser noch
quelle
Hast du es mit dem vollen Pfad anstatt mit dem ~ versucht?
quelle
Das Skript wird wahrscheinlich mit aufgerufen
/bin/sh
, was nicht versteht~
. Versuchen Sie es~
stattdessen mit dem vollständigen Pfad zu .quelle
Die erste empfohlene Antwort ist richtig - wenn ein Hook läuft, werden GIT_DIR usw. gesetzt. Wenn Sie das Skript jedoch in einem anderen Repository verwenden möchten, ist diese Methode fehlerhaft, da sie das Zurücksetzen von GIT_DIR fest codiert. Wie sie angedeutet haben, besteht die andere Möglichkeit darin, die Variable mithilfe von env wie folgt zu entfernen: env -i git reset --hard Welcher Befehl Sie dort ausführen, liegt ganz bei Ihnen - es ist nur das Bit 'env -i', das wichtig ist .
quelle