2010-03-08 19 views
10

Voici ce que j'essaie de faire:Tirer automatiquement sur le serveur distant avec Git push?

J'ai un référentiel GitHub, dont je voudrais rendre une partie visible sur le web. À l'heure actuelle, j'ai cloné le dépôt sur mon propre serveur et cela fonctionne bien, mais pour le garder à jour, je dois me connecter manuellement et tirer les dernières modifications. Je ne suis pas sûr si c'est la meilleure idée (ou la meilleure approche), mais je voudrais que le serveur distant tire automatiquement chaque fois que quelqu'un pousse vers le référentiel. GitHub le rend assez facile à exécuter un script quand quelqu'un pousse, mais je ne suis pas sûr de savoir comment tirer une fois que quelqu'un fait cela. J'ai utilisé PHP pour la simplicité, mais juste faire quelque chose comme git pull ne fonctionne pas naturellement à cause des permissions. Est-ce une mauvaise idée ou existe-t-il une autre façon de réaliser ce que je veux faire? Cela ressemble à une mise en place commune, mais je n'étais pas sûr.

Merci.

Répondre

2

S'il est facile d'exécuter le script à pousser, vous pouvez crochets de configuration à pousser:

  • de GitHub à nu (worktree vide) repo sur votre serveur web
  • de votre repo nu sur votre serveur web à votre « live » repo (avec un worktree représentant votre site web)

Vous pouvez alors associer cela avec un crochet sur votre « live » repo à se mettre à jour (par le biais d'une « fusion git », fusionner le contenu de votre repo nu à y notre repo "live"), chaque fois que votre repo nu pousse quelque chose.

Vous obtenez l'effet que vous voulez: toute pression sur votre dépôt GitHub (pour une certaine branche, je suppose) déclenchera un rafraîchissement sur votre repo serveur "live".

1

J'ai fait quelque chose qui fonctionne presque exactement de cette façon, sauf que le repo «distant» qui reçoit le push est sur la même machine que le repo qui tire ensuite. Il est vrai (et important) que le même ensemble d'utilisateurs dispose des mêmes autorisations sur les deux référentiels. (Mais cela devrait être OK, vous ne voulez pas que les gens au hasard poussent votre repo.) Dans tous les cas, j'ai simplement le git post-update hook appel un script shell qui fait l'attraction pour moi. Le seul point délicat est que vous devez nettoyer l'environnement (j'ai utilisé env -i, ou vous pouvez désactiver les variables liées à git), sinon le tirage est confus.