Flux de travail du serveur de production / de préparation Git

108

Actuellement, mon site Web (serveur de production) contient déjà beaucoup de code. Et maintenant, je veux commencer à utiliser Git pour mes projets et configurer un serveur intermédiaire pour mon équipe. Quelqu'un peut-il me donner des conseils?

Voici l'image dans mon esprit:

        Production        - Production server which already have codes
            ↑             
         Staging          - New staging server, will install Trac too
         ↗↙ ↖↘          
  Developer1  Developer2  - Local development 

Ma question est, comment dois-je commencer?

Voici quelques étapes dans mon esprit:

  1. faire un git initserveur en production (est-ce sûr?)
  2. clone le dépôt de la production au serveur intermédiaire
  3. les développeurs clonedu dépôt de la mise en scène à leur machine locale
  4. push fichiers sur le serveur intermédiaire une fois la modification terminée
  5. lorsque la mise en scène est prête, pushtout est à la production

Ce flux de travail a-t-il un sens ou existe-t-il une meilleure façon de le faire?

Et si je ne souhaite modifier qu'un seul fichier?

Est-ce que l'origine / maître a quelque chose à voir avec cela dans ce processus? Quelle est l'origine? vais-je finir par avoir plusieurs origines ??

Aussi, quand un développeur devrait-il utiliser branchdans ce cas?

Kayue
la source

Réponses:

59

Il est préférable d'utiliser la branche principale uniquement pour la branche de production et de développement pour la mise en scène. Chaque développeur doit créer une branche locale pour ajouter de nouvelles fonctionnalités, puis fusionner avec la branche de développement. Si vous êtes nouveau dans un git, essayez d'utiliser - http://github.com/nvie/gitflow Il y a aussi une bonne image décrivant le modèle de branchement git - http://nvie.com/posts/a-successful-git- modèle de branchement /

punaise.
la source
C'est une meilleure réponse. Je n'étais pas très familier avec le concept de branchement Git.
kayue
@punaise. Avez-vous un lien vers une ressource expliquant la branche de développement -> pousser vers le système intermédiaire et la branche principale -> pousser vers le serveur de production plus en détail? Le superbe article Un modèle de branchement Git réussi ne mentionne pas cette partie même s'il mentionne de très bons concepts de branchement et de versioning.
Edgar Alloro
19

Votre suggestion semble correcte, mais je ne laisserais pas les développeurs pousser directement vers le serveur de test. Au lieu de cela, un intégrateur devrait examiner attentivement les branches et les incorporer dans la branche principale (ou la branche de développement si vous utilisez le modèle git flow comme suggéré par bUg.) * La même personne pousserait vers le serveur intermédiaire.

* Intégrateur : " Une personne assez centrale agissant en tant qu'intégrateur dans un projet de groupe reçoit les modifications apportées par d'autres, les examine et les intègre et publie le résultat pour que d'autres les utilisent ... "


1. faire un git init dans le serveur de production (est-ce sûr?)

Oui, c'est sûr, mais vous devez bien sûr définir des autorisations très restrictives sur ce dépôt. Je commencerais probablement par curlinsérer tout le site Web sur un disque local, si je ne l'ai pas déjà.

2. cloner le référentiel de la production vers le serveur intermédiaire

Vous devriez probablement avoir un dépôt "central" séparé à la fois du serveur de production et du serveur intermédiaire. Celui-ci peut être cloné et poussé au besoin.

3. les développeurs clonent le dépôt de la staging vers leur machine locale

4. poussez les fichiers vers le serveur intermédiaire une fois la modification terminée

5. lorsque la mise en scène est prête, transférez tout à la production

Remplacez "staging" par "central" et je pense que vous allez bien, mais un plus gros problème est de savoir comment vous allez travailler avec les branches et la fusion, comme le souligne bUg.

Felixyz
la source
10
1: Pour rendre le dépôt Git sûr en production, assurez-vous d'ajouter un fichier .htaccess avec "Refuser tout" à l'intérieur.
kayue
2
2: Le repo "Central" de Felixyz fait référence au repo nu. Utilisez la commande --bare pour créer un dépôt nu.
kayue
1
@keyue 1: Encore mieux, ajoutez RedirectMatch 404 /\.gità votre production .htaccess pour protéger votre dossier .gitignore , .gitattributes et .git .
Leo