web-dev-qa-db-fra.com

devient "fatal: pas un dépôt git: '.'" lors de l'utilisation du hook post-update pour exécuter 'git pull' sur un autre repo

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

Mettre à jour

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.

78
Ty W

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
159
Ty W

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)

Important à noter,

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.

Plaisanter:

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é.

0
ThorSummoner

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

0
Zvika Naveh