web-dev-qa-db-fra.com

Si vous vous souciez de branches SVN si vous en avez seulement un?

Si nous travaillons uniquement avec une branche en subversion, devrions-nous même déranger? Ne pouvons-nous pas simplement travailler sur le coffre pour accélérer les choses?

C'est ainsi que nous développons avec Subversion:

  • Il y a un coffre
  • Nous faisons une nouvelle branche de développement
  • Nous développons une nouvelle fonctionnalité sur cette branche
  • Lorsque la fonctionnalité est terminée, elle est fusionnée dans le coffre, la branche est retirée et une nouvelle branche de développement est fabriquée à partir du coffre.

Lorsque nous voulons libérer à la production, nous faisons une étiquette du coffre. Les bugfixes sont fabriqués sur une branche de cette balise. Ce bugfix est ensuite fusionné dans le coffre.

C'est pourquoi nous faisons une nouvelle succursale de développement après une fonctionnalité. De cette façon, le bugfix est inclus assez bientôt dans notre nouveau code.

Vous trouverez ci-dessous un diagramme qui devrait clarifier:

Our Subversion strategy

Maintenant, il y a un sentiment que ce n'est pas la façon la plus efficace de travailler. Nous construisons localement avant de vous engager, ce qui prend environ 5 à 10 minutes. Vous pouvez comprendre que cela est expérimenté aussi longtemps.

L'idée d'une succursale de développement est que le coffre est toujours prêt à être publié. Mais ce n'est plus vrai dans notre situation. Parfois, une caractéristique est presque prête et certains développeurs commenceront déjà à coder la fonction suivante (sinon, ils seraient assis en attente d'un ou deux développeurs pour finir et fusionner).

Ensuite, lorsque la fonction 1 est terminée, elle est fusionnée dans le coffre, mais avec des commentaires 2 inclus.

Alors, devrions-nous même vous embêter avec la branche de développement, car nous n'avons jamais une branche? J'ai lu sur le développement fondé sur le coffre et la branche-by-abstraction, mais la plupart des articles que j'ai trouvés l'accent sur la partie de la branche par abstraction. J'ai l'impression que c'est pour de gros changements qui s'étendent sur plusieurs versions. Ce n'est pas un problème que nous ayons.

Qu'en penses-tu? Pouvons-nous simplement travailler sur le coffre? Le pire scénario est (je pense) que nous devrions faire une étiquette du tronc et de chercher les commits dont nous avons besoin, car certains commits/caractéristiques ne sont pas encore prêts.

10
Peter

Ce que vous décrivez avec votre développement de fonctionnalités est un développement parallèle (développement simultané ciblant différents versions de produits) et nécessite des branches pour le gérer correctement. Vous pouvez avoir une branche pour chaque version ou pour chaque fonctionnalité si vous devez souvent recomposer les fonctionnalités qui feront une libération particulière.

L'autre moyen de le faire, il serait de travailler hors du coffre par défaut mais créez une succursale si vous vous attendez à ce que votre tâche dépassait la prochaine version. Vous marquez toujours la sortie bien sûr.

Quelle approche que vous prenez dépend vraiment de la quantité de gestion que vous pouvez faire à l'avance. Si la libération typique n'a pas vraiment de développement parallèle, je prendrais la deuxième approche.

1
Jeremy