Ich habe folgendes Problem. Ich habe das ‘post-receive’ auf CD in ein bestimmtes Verzeichnis aktualisiert und dann das Repo hineingezogen, um es wie folgt bereitzustellen:
#!/bin/bash
cd /var/www/site
git pull origin master
Immer wenn ich jedoch auf meinem lokalen Computer ‘git push origin master’ ausführe, erhalte ich Folgendes:
Counting objects: 5, done.
Delta compression using up to 2 threads.
(etc..)
remote: fatal: Not a git repository: '.'
Doch wenn ich manuell zu cd /var/www/site und TU git pull origin master es funktioniert hervorragend.
Genial, genau das, was ich brauchte. Können Sie erklären, warum dies getan werden muss?
– Andy
28. März 2012 um 11:59 Uhr
GIT_DIR ist eine von wenigen Umgebungsvariablen, die Sie für verschiedene Git-Befehle festlegen können. In einem Post-Receive-Hook $GIT_DIR ist immer (?) eingestellt .. wenn du cd anderswo, git pull sieht noch $GIT_DIR einstellen . und erwartet, das Repo darin zu finden ., aber Sie sind umgezogen und es ist nicht da. Wenn Sie es löschen, kehrt Git zu seinem “normalen” Verhalten zurück (Blick in ./.gitan der Stelle, an der Sie cd-ed zu).
– Torek
29. März 2012 um 6:15 Uhr
Wäre es nicht möglich, einfach einzustellen GIT_DIR zum Verzeichnis sein cdrein? Zurücksetzen scheint überflüssig GIT_DIR und dann getrennt cd in das Arbeitsverzeichnis, wenn dies was ist GIT_DIR wurde für konzipiert. Gibt es einen Grund, warum dies nicht getan wird?
– Hashim Aziz
12. September 19 um 18:22 Uhr
Eine weitere Option ist, dass Sie das Arbeitsverzeichnis und das Git-Verzeichnis im Befehl angeben können.