2010-12-02 51 views
5

Nous avons une petite équipe numérique (3 concepteurs, 3 développeurs) et nous cherchons à intégrer Git dans notre système. En ce moment, pour la plupart de nos sites, nous avons un site de mise en scène (dev.example.com) et un site de production (example.com). Nos développeurs apportent généralement des modifications de code à une version locale, déplacent ces modifications vers le site intermédiaire, puis, une fois approuvées, ces modifications sont déplacées en direct. D'autre part, nos concepteurs effectuent de petites modifications (lorsque les développeurs sont trop occupés) directement sur le site de transfert, puis les mettent en ligne une fois approuvés. En outre, dans certains cas, nous n'avons pas de site de transfert et les modifications sont directement répercutées sur le site de production. Je sais que les différents workflows ne sont pas idéaux mais quelle serait la meilleure façon pour nous d'intégrer Git dans ce système actuel et de garder le workflow assez simple (pour l'amour des concepteurs)? Notre workflow actuel doit-il être standardisé avant d'intégrer Git (les sites de staging sont obligatoires et les concepteurs doivent se développer localement avant de passer à la mise en scène) ou Git est-il suffisamment flexible pour fonctionner tel quel? Je suis assez nouveau à Git mais j'ai lu qu'une poussée devrait seulement être faite à un référentiel nu. Est-ce nécessaire? Si oui, cela pourrait-il être le site de transit? Ou devrait-il s'agir de sa propre entité (c'est-à-dire sur un serveur interne comme example.local)?Stratégie de développement Git pour petite équipe

Est-ce qu'un bon flux de travail soit en tant que tel:

  1. utilisateur va chercher et fusionne dépôt nu dans le référentiel local.
  2. L'utilisateur développe localement et valide les modifications apportées au référentiel local.
  3. utilisateur pousse des modifications à nu à example.local référentiel (ou quelque chose de similaire)
  4. utilisateur tire des changements de dépôt nu dans le référentiel mettant en scène dev.example.com
  5. Une fois approuvé, l'utilisateur tire des changements de dépôt nu au référentiel de production exemple.com

Mon seul problème avec ce flux de travail est que le référentiel nu semble inutile ... non? Et enfin, je comprends ce qui serait enregistré sur le dépôt local (les changements d'utilisateurs, les commits, etc.) mais je ne sais pas ce qui serait enregistré sur le référentiel nu (après les poussées), la mise en scène (après la traction) et la production (après la traction); toutes les étapes ci-dessus pourraient-elles être suivies et enregistrées facilement?

Merci pour tous les conseils/réponses!

+0

Je devrais noter que ce sont des sites de taille variable construits sur des serveurs LAMP. Beaucoup d'entre eux sont développés avec Wordpress. – user527480

Répondre

3

ici est un flux de travail git interestion: http://nvie.com/posts/a-successful-git-branching-model/

si vos développeurs et les concepteurs ne sont pas familiers avec la ligne de commande interphase, utilisez un emballage git GUI, il existe plusieurs: gitx, gitbox, git tower, il suffit de les google pour obtenir leurs sites. Trouver un outil ou des outils que votre équipe est à l'aise. Le meilleur flux de travail est celui qui répond aux besoins de votre équipe et il peut changer au fil du temps.

0

Git est suffisamment flexible pour fonctionner tel quel?

Très bien.

La façon dont je l'ai fait, Laissez les concepteurs travailler sur la branche design ou quelque chose de similaire et toujours avoir une seule commande à pousser. Developer fusionne le contenu de la branche de conception chaque fois qu'il met à jour le serveur. En fait, la fusion sera une commande, dans le script de déploiement automatique.

Pour mettre en scène les modifications de conception uniquement et non les modifications de développement, vous pouvez toujours basculer la branche dans la zone intermédiaire vers la branche de conception. Pour cela, vous pouvez fournir au concepteur un script de déploiement qui pousse les dernières modifications, les commutateurs à la branche de conception. Ceci étant dit, encouragez les concepteurs à utiliser git, lentement et graduellement. Commencez par les accrocher à la commande stash. Et tire. Ensuite, demandez-leur de créer différentes branches. En ce qui concerne le référentiel nu, il s'agit d'une manière standard de garder toutes les personnes synchronisées et il n'y a aucune raison technique d'en avoir réellement un de plus. Sauf que la plupart des gens utilisent le github ou un service de sauvegarde à distance équivalent qui a une bonne interface web pour communiquer et se coordonner, defacto devient le référentiel central.

0

Je ne vois pas la raison d'utiliser un référentiel nu non plus. J'ai écrit un court article sur un simple processus de développement: A simple developer process with Git

Ce n'est pas exactement votre cas, mais une solution plus générale. L'idée d'utiliser des branches de fonctionnalité est de permettre aux gens de pousser leurs changements au dépôt principal sans gâcher le travail de chacun et de faciliter la fusion des changements d'autres personnes.

Si je l'ai fait, ce que je ferais:

  1. Gitorious Installer. Pas nécessaire mais aide à garder une trace des choses,
  2. Créez votre référentiel de production dans Gitorious.
  3. Ajoute un post-hook au référentiel de production qui, lors de la réception des mises à jour, met automatiquement à jour le serveur de production (peut-être différé jusqu'au lendemain, ce qui vous convient le mieux).
  4. Créer un référentiel de développement dans Gitorious.
  5. Ajouter un post-hook similaire au référentiel de développement qui met à jour le serveur de développement.

Cette configuration présente de nombreux avantages:

  • Les développeurs ne ont pas besoin de vous soucier de la mise à jour du site. Tout ce qu'ils ont à faire est de pousser à dev repo.
  • La mise à jour du serveur de production après que les tests soient passés est très simple, une simple poussée suffit (le référentiel de production n'est jamais mis à jour depuis n'importe quel serveur de développement). Vous pouvez même ajouter une section au post-hook qui le fait si une étiquette est poussée. Vous pouvez donc marquer la version libérable avec un numéro de version à l'aide d'une balise, ce qui met automatiquement à jour le serveur de production.
  • Il ya beaucoup moins de points où quelqu'un peut gâcher quelque chose ("Oups, je voulais pousser à dev mais à la place poussé à prod.").