2010-10-14 5 views
1

Je souhaite déployer git pour mon organisation. Je souhaite que les utilisateurs n'aient pas accès au serveur et qu'ils ne soient validés que dans le référentiel. Cependant, je veux que le dépôt soit un vrai système de fichiers que je peux utiliser avec un hôte virtuel apache. Ce que je l'ai fait est le suivant:Configuration du serveur de développement de groupe git

cd /home/vhosts 
git init --shared {projectname} 
git config receive.denyCurrentBranch ignore 

Je veux alors courir après git reset --hard chaque pression sur le référentiel principal.

Est-ce une bonne idée? Devrais-je avoir un deuxième dépôt qui fait un git pull au lieu d'un git reset --hard ... lequel est plus lourd? Puis-je configurer ceci pour être un hook ??

Merci.

+0

Cette question est vraiment si grave que personne ne veut la critiquer? – Simon

+0

Je ne comprends pas la configuration. Pourquoi le référentiel sur ce serveur «repousse-t-il» le référentiel principal? – mckeed

Répondre

2

J'ai la configuration que vous décrivez avec quelques modifications. Joe Maller a un excellent article que j'ai utilisé comme base pour ma configuration. A web-focused Git workflow

1

Généralement, la façon de configurer ceci est d'avoir un référentiel «nu» qui est le maître de niveau supérieur que tout le monde pousse et tire. Le serveur Web exécutant Apache possède son propre référentiel séparé (si vous manquez de matériel, ils peuvent être sur la même machine). Vous installez un hook post-commit sur le référentiel maître qui déclenche un "git pull" sur celui d'Apache sous /home/vhosts. (Ce crochet est simple sur une machine, mais vous pouvez le faire à travers des machines si vous définissez cette façon.)

Pour créer un dépôt nu:

mkdir -p /home/git/{projectname}.git 
cd /home/git/{projectname}.git 
git init --shared --bare 

Un dépôt nu n'a pas CdT tout, juste le contenu de la structure .git.

0

Je ne suis pas sûr de ce qu'Apache a à voir avec ça. Il suffit d'installer un repo, un seul comme Greg dit, et que ce soit votre principal dépôt. Les gens tirent alors de cela, et quand ils sont prêts, ils y poussent. Vous voulez probablement refuser les fusions non-forward-forward sur le repo principal, afin que les gens tirent toujours le dernier code, fusionnent avec lui, puis poussent. La meilleure façon de donner accès au dépôt aux personnes est d'utiliser le démon git et le protocole git://.

Si vous voulez une interface web, utilisez gitweb, mais ce n'est qu'une question de commodité.

Il existe également une bonne discussion sur les différents flux de travail au section 5.1 of the Pro Git book, ce qui peut aider à clarifier quel est le meilleur flux de travail pour vous.

Questions connexes