Ich bin neu in Git, also entschuldige ich mich (und korrigiere mich bitte), wenn ich hier die Terminologie missbrauche, aber ich werde mein Bestes geben.
Ich versuche, ein Bare-Git-Repo (Hub) und eine Entwicklungskopie (Prime) auf einem Webserver einzurichten. Ich habe versucht, es nach diesem Artikel zu strukturieren . Ich möchte, dass die Entwicklungsarbeitskopie immer dann aktualisiert wird, wenn das Hub-Repo aufgeschoben wird. Ich habe den Eindruck, dass der richtige Haken dafür ist post-update
, den ich so geschaffen habe:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Aktualisieren
Wenn ich Änderungen von meinem lokalen Repo auf den Bare Hub übertrage, erhalte ich die folgende Ausgabe vom Post-Update-Skript:
remote: sites
remote: fatal: Not a git repository: '.'
Wenn ich jedoch als Benutzer-Sites auf den Server setze und dieses Skript manuell ausführe, funktioniert es hervorragend. Irgendwelche Ideen, was mit diesem Hook oder Skript möglicherweise schief geht?
GIT_DIR
behebt das Problem.GIT_DIR
anstelle von verwendetPWD
.cd
-ing ändert dasPWD
nicht dasGIT_DIR
. Es muss einen Fallback in Git vonGIT_DIR
bis geben,PWD
sollte der erste nicht verfügbar sein.git pull
?Versuchen Sie stattdessen:
quelle
Trotzdem funktioniert GIT_DIR einfach nicht.
Das Problem tritt auf, wenn Sie GIT_DIR an einer anderen Stelle falsch eingestellt haben.
Sie können stattdessen einfach Folgendes hinzufügen: GIT_DIR = .git / Es wird funktionieren
quelle
In meinem Fall hatte ich einen Arbeitsbaum angegeben, der bei einigen Befehlen wie
pull
(oder genauerfetch
) unterbrochen wird .Um den Arbeitsbaum zu deaktivieren, wenn er sich in Ihrer Git-Konfiguration befindet, gehen Sie über:
(Es gibt andere Möglichkeiten, einen Arbeitsbaum festzulegen.)
Wichtig zu beachten,
Es gibt so gut wie keine Änderung, dass dies Ihr Problem ist, es sei denn, Sie haben dieses Loch selbst mit einem benutzerdefinierten Arbeitsbaum gegraben.
Geplänkel:
Dies impliziert für mich, dass Git-Interna
.git/
in einigen Fällen Pfade relativ zum Arbeitsbaum + verwenden. Nach meiner Erfahrung werden Arbeitsbäume nur von den grundlegendsten Teilen von Git gut unterstützt. Ich habe nicht gründlich experimentiert, Git würde sich wahrscheinlich verhalten, wenn ich die Konfigurationsvariable für das Git-Verzeichnis richtig einstelle, mit der ich nicht gespielt habe.quelle
Sie haben wahrscheinlich ein Berechtigungsproblem. Ich bin nicht sicher, wie Sie Ihr Bare-Git-Repo eingerichtet haben, aber wenn es unter dem
git
Benutzer ausgeführt wird, stellen Sie sicher, dass dergit
Benutzer dasgit pull
in Ihrem Projektverzeichnis ausführen darf .Versuchen Sie dies optional, um herauszufinden, welcher Benutzer Sie sind, wenn der Hook ausgeführt wird:
quelle
echo `whoami`
daswhoami
nicht?