2013-04-17 2 views
2

Je suis nouveau à git et je voudrais savoir si cette approche de branchement serait acceptable pour ce que nous avions l'intention de faire.Comment faire une approche de ramification pour plusieurs sites?

Nous aurons trois sites

  • prod.websitename.com - site en
  • sandbox.websitename.com - site de test qui peut être utilisé par nos clients
  • dev.websitename.com - site interne de développement et de test de correctifs/fonctionnalités avant de passer au site en direct

Ce que nous avons l'intention de faire est d'avoir un seul référentiel centralisé qui desservirait les trois sites. Le référentiel aura trois branches: maître, sandbox, et développement

puis nous allons vérifier la branche pour changer les fichiers et tirer/pousser les changements pour chaque site.

Pour les modifications, le développement sera poussé vers la branche principale et la branche sandbox. Sandbox ne sera jamais poussé à maîtriser.

Est-ce correct? Tout conseil est fortement apprécié.

Merci beaucoup.

+0

J'ai modifié ma réponse pour répondre à votre dernière question. – VonC

Répondre

0

Cela peut fonctionner, à condition que votre principal dépôt principal soit un bare repo sur lequel vous pouvez appuyer.

De là, un post-receive hook peut déclencher la caisse concernée, en fonction de la branche qui a été poussé (voir « Writing a git post-receive hook to deal with a specific branch »)

#!/bin/bash 
while read oldrev newrev refname 
do 
    branch=$(git rev-parse --symbolic --abbrev-ref $refname) 
    if [ "master" == "$branch" ]; then 
     # Do something 
    fi 
    if [ "sandbox" == "$branch" ]; then 
     # Do something 
    fi 
    if [ "development" == "$branch" ]; then 
     # Do something 
    fi 
done 

Pour les changements, le développement sera poussé à la fois maître et bac à sable branche. Sandbox ne sera jamais poussé à maîtriser.

Ce n'est pas la meilleure pratique: vous devez fusionner ce que vous avez besoin de dev aux master et sandbox locales branches, puis pousser les branches à la prise en pension unique, à distance.
régulièrement rebasant dev sur master est également une bonne idée.

+0

J'apprécie vraiment vos conseils. BTW, Oui, c'est un repo nu. Je suis le seul committer ... et j'ai vu votre lien fourni sur un autre post GIT stackoverflow "Un workflow Rebase pour GIT". Je pense que je vais essayer de suivre cette idée de rebasage ... "prendre tous les changements qui ont été commis en dev et les rejouer à la fois maître et bac à sable" puis pousser chaque branche à des repo uniques. C'est comme ça que je comprends votre explication ... quant à l'hameçon ... c'est tout simplement incroyable pour moi maintenant en tant que débutant total sur ce sujet et je ne peux vraiment pas comprendre sa valeur. Merci Von! – Woppi

+0

@Woppi le crochet est la clé pour automatiser la caisse du repo nu aux bons endroits, comme dans http://stackoverflow.com/a/15930178/6309 – VonC

Questions connexes