Je pense que cet article, A Successful Git Branching Model , est très bien connu des utilisateurs expérimentés de DVCS.
J'utilise hg
principalement, mais je dirais que cette discussion est très bien pour n'importe quel DVCS.
Notre flux de travail actuel est que chaque développeur clone le référentiel maître. Nous écrivons du code sur notre propre dépôt local, exécutons des tests et, si tout se passe bien, poussons le maître.
Nous voulons donc configurer des serveurs CI comme Jenkins et améliorer notre flux de travail avec le futur système d'approvisionnement (chef, marionnette, ansible, etc.).
Partie réelle
Eh bien, le modèle présenté ci-dessus fonctionne bien mais les branches peuvent casser l'IC. La branche de fonctionnalité devrait se synchroniser avec l'origine (selon l'article, ce serait une development
branche) pour rendre le CI et la fusion fluides, non?
Imaginons qu'Alice et Bob travaillent sur deux fonctionnalités. Mais Alice a fini le lendemain. Le long métrage de Bob prend une semaine. Au moment où Bob a terminé, ses modifications sont obsolètes (peut-être qu'Alice a refactorisé / renommé certaines classes).
Une solution consiste chaque matin, les développeurs doivent tirer master/origin
pour vérifier s'il y a des changements. Si Alice s'est engagée, Bob devrait tirer et fusionner dans son espace de travail afin que sa branche de fonctionnalité soit à jour.
- Est-ce un bon moyen?
- Ces branches doivent-elles exister dans le référentiel maître (pas dans le clone local?). Cela signifie-t-il que chaque développeur doit avoir des privilèges de validation sur le référentiel maître sur GitHub / Bitbucket pour pouvoir créer une nouvelle branche? Ou cela se fait localement?
- Enfin, le modèle présenté par l'article devrait casser CI si les branches ne sont pas synchronisées avec le
origin/master
. Étant donné que nous souhaitons effectuer la génération tous les soirs, les développeurs doivent-ils tirer et fusionner avant de quitter le travail et avoir également des exécutions CI sur chaque branche de fonctionnalité?