2010-07-29 5 views
1

J'ai un projet pour lequel je suis prêt à créer une branche, qui sera la branche 1.0.x pour toutes les modifications 1.0.x. Je veux également avoir un ensemble de balises pour correspondre aux changements de cette branche, c'est-à-dire 1.0.1, 1.0.2, etc. Lorsque je crée cette branche 1.0.x pour la première fois, je crée également une balise nommée 1.0. À ce stade, la branche et l'étiquette ont le même contenu (comme je fais des changements à la branche 1.0.x, je vais créer de nouveaux tags pour 1.0.1, 1.0.2, comme je l'ai mentionné ci-dessus). Il semble qu'il y ait un peu de duplication avec la façon dont svn stocke les branches et les tags. Est-ce une bonne pratique pour créer les branches et les tags? Ou y a-t-il une meilleure façon de faire cela?svn branchement et marquage des bonnes pratiques

grâce, Jeff

Répondre

1

svn ne se soucient pas vraiment comment les projets sont stockés, le camion, l'étiquette, la mise en page de la branche est juste une suggestion. Il semble que vous allez utiliser votre branche pour le développement de la ligne principale, et ensuite baliser la branche pour la déployer en tant que version. Pour moi, il semble que vous utilisez ramifié dans ce qui est traditionnellement fait dans le coffre. Voici un cycle de développement assez standard:

construire de nouvelles fonctionnalités -> arrêter de nouvelles fonctionnalités, stabiliser le tronc -> Version tag -> construire de nouvelles fonctions dans le coffre (répétition)

Ensuite, si vous avez besoin de corriger les bugs tag, assurez-vous de les porter sur le tronc.

Ceci est trop simplifié, mais c'est un bon point de départ.

+0

s'il vous plaît voir mon commentaire à l'article @Michael Shimmins. Je branche parce que je pourrais devoir faire le développement parallèle sur de diverses versions, c.-à-d. Faire une correction sur 1.0 qui deviendra 1.0.1, et continuant également le développement sur la version 1.1 séparément (et fusionnant les changements de la branche 1.0.x à 1.1). –

1

Il semble que il y a un peu de double emploi avec la façon dont svn branches magasins et les étiquettes

et le marquage sont Branching les mêmes dans SVN.

Il semble que vous branchez la branche pour chaque version mineure dans la branche de la version majeure. Fondamentalement, une branche de fonctionnalité dans une branche de version.

Si vous apportez des modifications à la balise, je ne branche pas la balise pour la garder cohérente. Si vous étiquetez la branche pour conserver les points de repère des versions mineures pour référence future (ie: pouvoir obtenir un instantané du code utilisé pour construire 1.2.7 par exemple) alors les balises sont correctes. Je marque généralement le tronc (en supposant que vous utilisez le tronc comme «branche stable»). Je branche le tronc pour la version/fonctionnalités, et une fois terminé et ayant réussi le contrôle qualité, je fusionne ces branches dans le coffre. Je marque ensuite le trung pour l'étiqueter comme le code utilisé pour construire une version. Je supprime ensuite la branche de fonctionnalité car elle a été fusionnée dans le tronc.

Il n'y a rien de mal à ramifier des branches, il peut aller aussi loin que vous le souhaitez, bien que la fusion puisse devenir (conceptuellement) plus difficile.

+0

merci pour votre réponse. Pour ajouter plus d'informations, l'une des choses qui me préoccupe est de savoir si la version 1.0 est déployée chez nos clients et nous avons commencé 1.1. Le client a alors besoin d'un correctif pour 1.0, qui devient 1.0.1, mais les fonctionnalités de 1.1 ne sont pas encore prêtes pour le client. Maintenant, je peux modifier cette branche 1.0.x et créer 1.0.1 sans donner la version 1.1, c'est pourquoi je pensais à la branche, même pour les versions mineures. Mais le point que je crée la version 1.0.1, serait-il logique d'étiqueter cela comme référence (en supposant que mon schéma de branchement/marquage a du sens)? –

+0

Ouais - vous pouvez branchez le tag 1.0 comme 1.0.1 branche, effectuez vos modifications, validez-les et fusionnez-les dans le tronc stable. Vous devez ensuite marquer à nouveau le tronc stable comme 1.0.1 contenant uniquement les modifications 1.0 + 1.0.1. La branche 1.1 n'a pas encore été fusionnée dans le tronc, elle est donc toujours isolée de la publication. Vous pouvez fusionner le tronc jusqu'à la branche 1.1 après avoir fusionné le tag, afin que vos changements de patch 1.0.1 soient incorporés dans la dernière version de développement 1.1. –

Questions connexes