Comment définir GIT_DIR & GIT_WORK_TREE lors de l'entretien de plusieurs référentiels

Comme cette SORTE de post, j'ai le flux de travail suivant que je tiens à maintenir avec git:

  1. Plusieurs personnes développent localement
  2. Commettre quelques choses
  3. Commettre plus de choses
  4. Pousser à la mise en scène
  5. Test nouveau code de mise en scène
  6. Pousser à la Production

Notre serveur de test sert de nombreux sites différents. Je tiens à mettre en place le référentiel de chaque dans un autre dossier dans le répertoire home de l'utilisateur. Chaque dépôt aura un post-recevoir crochet (ala Daniel Messier article) qui vérifie les changements dans la racine web pour ce site/dépôt.

C'est le numéro six, qui me donne de l'ennui.

Lorsque j'essaie d'exécuter toutes les commandes git, j'obtiens l'erreur "fatal: Cette opération doit être exécutée dans un travail d'arbre". J'obtiens cette erreur si je suis en cours d'exécution 'git status' dans le référentiel (/home/gituser/web1.git - ce que je ne crois pas que devraient travailler de toute façon..) ou à partir de la racine web (/var/www/web1).

Cependant, si je spécifie le GIT_DIR et GIT_WORK_TREE, alors que je suis en mesure d'exécuter des commandes git. Deux de ces travaux:

$ git --git-dir /home/gituser/website1.git --work-tree /var/www/website1 status
$ GIT_DIR=/home/gituser/website1.git GIT_WORK_TREE=/var/www/website1 git status 

J'ai donc besoin de:

  1. Une alternative à la saisie du répertoire et de travail de l'arbre avec chaque commande
  2. Une alternative à leur mise persistante des variables d'environnement, parce que cela ne fonctionne que pour web1, pas 2, website3, etc

Suis-je le faire correctement? Comment puis-je obtenir git le répertoire info dont il a besoin pour chaque référentiel?

OriginalL'auteur doub1ejack | 2012-05-30