Je suis nouveau dans git, alors je m'excuse (et corrigez-moi s'il vous plaît) si j'utilise mal la terminologie ici, mais je ferai de mon mieux.
J'essaie de mettre en place un repo nu git (hub) et une copie de travail du site de développement (prime) sur un serveur Web. J'ai essayé de le modeler après cet article . Je souhaite que la copie de travail de développement soit mise à jour chaque fois que le repo hub est poussé vers. J'ai l'impression que le crochet approprié pour cela est post-update
, que j'ai créé comme ceci:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Mettre à jour
Lorsque je transmets les modifications de mon dépôt local au hub nu, j'obtiens la sortie suivante du script de post-mise à jour:
remote: sites
remote: fatal: Not a git repository: '.'
Cependant, si je SSH sur le serveur en tant que «sites» d'utilisateurs et que j'exécute ce script manuellement, cela fonctionne très bien. Des idées sur ce qui pourrait ne pas aller avec ce hook ou ce script?
GIT_DIR
résout le problème.GIT_DIR
au lieu dePWD
.cd
-ing change lePWD
pas leGIT_DIR
. Il doit y avoir une solution de secours dans git deGIT_DIR
àPWD
si le premier n'est pas disponible.git pull
?Essayez plutôt:
la source
Malgré cela, GIT_DIR ne fonctionne pas.
le problème se produit lorsque vous définissez GIT_DIR incorrectement ailleurs.
vous pouvez simplement ajouter cela à la place: GIT_DIR = .git / Cela fonctionnera
la source
Dans mon cas, j'avais spécifié un arbre de travail, et cela casse sur certaines commandes, comme
pull
(ou plus précisémentfetch
).Pour désactiver l'arborescence de travail si elle est dans votre configuration git, utilisez:
(Il existe d'autres façons de définir un arbre de travail)
Important à noter,
Il n'y a pratiquement aucun changement de ce problème, à moins que vous n'ayez creusé vous-même ce trou autour de vous en utilisant un arbre de travail personnalisé en premier lieu.
Plaisanter:
Cela m'implique que les internes de git utilisent des chemins relatifs à l'arbre de travail +
.git/
dans certains cas. D'après mon expérience, les arbres de travail ne sont pas du tout supportés, sauf par les parties les plus fondamentales de git. Je n'ai pas expérimenté à fond, Git se comporterait probablement si je définissais correctement la variable de configuration du répertoire git, avec laquelle je n'ai pas joué.la source
Vous avez probablement un problème d'autorisations. Je ne sais pas comment vous avez configuré votre repo nu git, mais s'il s'exécute sous l'
git
utilisateur, assurez-vous que l'git
utilisateur est autorisé à effectuer legit pull
dans votre répertoire de projet.Essayez éventuellement ceci pour savoir quel utilisateur vous êtes lorsque le hook est exécuté:
la source
echo `whoami`
ce quewhoami
cela ne fait pas?