Ich habe das folgende Problem. Ich habe die ‚Post-empfangen‘ auf CD in einem bestimmten Verzeichnis aktualisiert und dann die repo ziehen darin einzusetzen, wie so:git post-receive funktioniert nicht richtig
#!/bin/bash
cd /var/www/site
git pull origin master
Allerdings, wenn ich ‚git push origin master‘ tun auf meinem lokalen Rechner erhalte ich die folgenden:
Counting objects: 5, done.
Delta compression using up to 2 threads.
(etc..)
remote: fatal: Not a git repository: '.'
Doch wenn ich manuell cd zu /var/www/site
und git pull origin master
tun es funktioniert hervorragend.
Brilliant, genau das, was ich brauchte. Stört es Sie zu erklären, warum dies getan werden muss? – andy
'GIT_DIR' ist eine der wenigen Umgebungsvariablen, die Sie für verschiedene Git-Befehle festlegen können. In einem Post-Receive-Hook ist '$ GIT_DIR' immer (?) Auf' .' gesetzt. Wenn Sie an anderer Stelle "cd" wählen, sieht 'git pull' immer noch' $ GIT_DIR' auf '.' gesetzt und erwartet, dass Sie den Repo in' .' finden, aber Sie sind umgezogen und es ist nicht da. Wenn du es ausräumst, kehrt git zu seinem "normalen" Verhalten zurück (schaue in './. Git ', an dem Ort, an den du' cd'-edst). – torek