Je suis nouveau, 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 configurer un référentiel Git nu (hub) et une copie de travail de 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 référentiel de concentrateur est poussé. J'ai l'impression que le crochet approprié pour cela est post-update
, que j'ai créé comme suit:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Lorsque je modifie le référentiel local vers le concentrateur nu, je reçois le résultat suivant du script post-mise à jour:
remote: sites
remote: fatal: Not a git repository: '.'
Cependant, si je SSH sur le serveur en tant qu'utilisateur "sites" et que j'exécute ce script manuellement, il fonctionne parfaitement.
Voici le script qui a finalement fonctionné. Je pense que le peu qui me manquait à l'origine qui l'empêchait de travailler à distance était le unset GIT_DIR
#!/bin/sh
cd /path/to/working-copy/ || exit
unset GIT_DIR
git pull repo branch
exec git-update-server-info
Essayez plutôt:
#!/bin/sh
cd /path/to/working-copy/
env -i git pull
Dans mon cas, j'avais spécifié un arbre de travail, et certaines commandes, telles que pull
(ou plus précisément fetch
), se rompaient.
Désactiver l’arbre de travail s’il se trouve dans votre configuration git via:
git config --unset core.worktree
(Il existe d'autres moyens de définir un arbre de travail)
Il n’ya pratiquement aucun changement à ce problème, sauf si vous avez vous-même creusé ce trou en utilisant un arbre de travail personnalisé en premier lieu.
Cela implique pour moi que les internes de git utilisent des chemins relatifs à l'arborescence + .git/
dans certains cas. D'après mon expérience, les arbres de travail ne sont pas bien 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 la variable de configuration du répertoire git correctement, ce avec quoi je n'ai pas joué.
Malgré cela Non défini GIT_DIR Ne fonctionne que.
le problème se produit lorsque vous définissez GIT_DIR à tort ailleurs.
vous pouvez simplement ajouter cela à la place: GIT_DIR = .git / Cela fonctionnera