45 votes

Bonne Façon D'Utiliser Git/GitHub - PHP avec Système de Dev/Test/serveurs de Production

Je m'excuse si ce qui est évident ou facile, j'ai regardé un bon nombre de git/github tutoriels et lire d'autres articles, mais je veux être sûr de ce que je fais est juste.

Je veux intégrer VC (pour des raisons évidentes) dans mon équipe de développement et les processus.

Actuel processus de développement (à l'aide de Dreamweaver):
* Recevoir un billet (ou ordre de travail)
* Télécharger le fichier sur le serveur de Développement
* Apporter des modifications au fichier
* Transfert de fichier vers serveur de développement
* Les changements testé/vérifié
* Envoyer à un serveur de production


J'essaie de comprendre comment le faire notre nouveau processus de développement avec l'aide de Git.

Je suis commutation sur PHPStorm (qui est un IDE PHP avec l'intégration directe avec Git).

Serait-il être quelque chose comme

  • Recevoir un billet (ou ordre de travail)
  • Validation/mise à Jour/Téléchargement de fichier(s)
  • Modifier Les Fichiers
  • Télécharger le fichier (ce qui je suppose est également le répertoire de travail actuel...?)
  • À la fin de la journée, faire un commit
  • Avoir le script de construction envoyer des données au serveur de test (nightly build)

Ou serait-il mieux de faire quelque chose comme

  • Recevoir un billet (ou ordre de travail)
  • Validation/mise à Jour/Téléchargement de fichier(s)
  • Modifier Les Fichiers
  • Télécharger le fichier/s'engager
  • Avoir le script de construction envoyer des données au serveur de test (nightly build)

Ou est-il un autre moyen? Ayant un peu de mal à comprendre ce qui serait le flux optimal?

Toute aide serait grandement appréciée.


Modifier

Je suis en train de voir si c'est mieux d'avoir une version du serveur local (chaque développeur), et si oui, comment cela fonctionne, si vous avez 7 ou ainsi, les branches?

Si non, comment faites-vous affaire avec 7 ou ainsi, les branches avec eux sur le web? Avez-vous fichiers FTP ou d'utiliser Git Crochets pour faire la mise à jour automatique?

Mise à jour 07/26/2012

Après avoir travaillé avec succès avec Git pour un certain temps maintenant, j'ai été la suite de cette ramification modèle avec beaucoup de succès: Un Succès Git Ramification Modèle

La réponse à la ci-dessus est oui -- devriez vraiment avoir une version locale du serveur.

67voto

hoppa Points 2180

En supposant que vous avez un serveur et un serveur de développement, je voudrais faire quelque chose le long de ces lignes.

Avant même de commencer avec un cycle de développement, j'aurais au moins deux branches:

  1. Maître - le serveur de développement s'exécute sur cette branche
  2. Stable - le serveur s'exécute sur cette branche.

Donc, si un développeur reçoit un billet ou un bon de travail, il/elle devra effectuer les actions suivantes:

  1. git pull origin master
  2. git branch featureBranch (nommé en tant que le numéro de ticket ou une bonne description de l'ordre de travail)
  3. git checkout featureBranch
  4. De faire des changements qui vont réaliser le changement souhaité. S'engager aussi souvent que nécessaire. Le faire parce que vous allez créer précieux de l'histoire. Par exemple, vous pouvez essayer une approche à un problème et si cela ne fonctionne pas, l'abandonner. Si un jour plus tard, vous voyez la lumière et à re-appliquer la solution, il est dans votre histoire!
  5. Lorsque la fonction est entièrement développé et testé en local, checkout master.
  6. git merge featureBranch
  7. git push origin master
  8. Test de la poussée des changements sur votre serveur de développement. C'est le moment de lancer tous les tests que vous pouvez penser.
  9. Si tout fonctionne, fusion de la fonctionnalité ou de correction dans la branche stable. Maintenant, le changement est en direct pour vos clients.

Le code sur le serveur

La mise à jour des serveurs ne devrait pas être un problème. En principe, je serais comme utilisateurs, tout comme vous êtes développeurs sont. Dans mon entreprise nous avons configuration des serveurs en lecture seulement. Fondamentalement cela signifie que les serveurs peuvent ne poussez jamais rien, mais peut toujours tirer. Cette mise en place n'est pas trivial bien, vous pouvez tout aussi bien créer un simple webinterface qui, tout simplement, ne permet qu'un git pull. Si vous pouvez garder votre développeurs de faire des trucs sur des implémentations en direct, vous êtes sûr :)

[MODIFIER]

En réponse à la dernière des questions posées dans les commentaires de cette réaction:

Je ne sais pas si j'ai bien compris votre question correctement, mais en principe (simplifié un peu) c'est comment je pourrais faire cela, j'ai été dans vos chaussures. Example setup

La machine d'essai (ou à la racine du site qui sert de mise en œuvre des tests), elle a de code source dans un dépôt git avec la branche master vérifié. Alors que la création de ce référentiel vous pouvez même supprimer toutes les autres références à toutes les autres branches de sorte que vous serez sûr de ne peut commander une mauvaise direction dans ce référentiel. Donc, fondamentalement, la machine d'essai a un dépôt Git avec seulement une branche master qui est vérifié.

Pour les serveurs, je ferais exactement la même chose, mais cette fois avec la branche stable vérifié. Développeur devrait avoir un référentiel local cloné dans lequel toutes les branches existent. Et une mise en œuvre locale des logiciels que vous avez les gars construire. Ce logiciel est sa source d'une le dépôt git local. En d'autres termes: à partir de l'extrait de la branche dans ce référentiel.

Codage réel

Lorsqu'une nouvelle fonctionnalité est voulu, une branche peut être faite sur la base master. Lorsque la direction générale est cochée, les modifications peuvent être effectuées et vérifiées sur place par le développeur (puisque le logiciel est maintenant en cours d'exécution sur la source de la branche).

Si tout semble être dans l'ordre, les changements sont fusionnés à partir d'une entité de la branche de maître et poussé à votre "git machine". "votre github" pour ainsi dire. Les tests peuvent maintenant tirer les changements dans tous les tests nécessaires peut être fait par l'AQ. Si ils décident tout est ok, le développeur peut fusionner les modifications apportées par le maître d'stable et pousser à nouveau.

Tous les thats gauche est maintenant en tirant la forme de vos machines en direct.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X