2010-10-28 5 views
1

Je sais que cela n'est pas lié au codage. Mais c'est important pour le codage, alors publiez ici.svn processus de travail

Que signifie Trunk, Branch?

Comment un processus de publication se passe-t-il dans SVN?

J'ai 4 couches.

  1. code machine développeur.
  2. stage02
  3. stage03
  4. production

ce qui devrait être fait le coffre?

Répondre

1

De manière générale, le flux de travail est généralement personnalisé pour une équipe/un projet spécifique.

J'ai travaillé avec le flux de travail suivant:

  • Tronc est un lieu pour les tendances principales de ce produit. Il contient la version ou le produit actuellement développé.

  • Les branches sont créées pour toutes les versions publiées d'un produit. Les correctifs et les mises à jour mineures sont effectués dans les branches (puis construits, testés et livrés aux utilisateurs finaux). Des correctifs similaires sont également appliqués au tronc (ou fusionnés à partir de la branche plus tard). Parfois, des branches distinctes sont créées pour les grandes entités, lorsque le développement de fonctionnalités est effectué par un groupe de développeurs et/ou peut affecter de manière significative d'autres développeurs. L'avantage de cette approche est discutable, et dépend de la situation spécifique, car la procédure de fusion dans SVN est parfois coûteuse.

  • La machine du développeur conserve uniquement la copie de travail, avec le développeur de version en cours de traitement. Le développeur effectue des mises à jour fréquemment et corrige tous les conflits. De plus, le développeur effectue fréquemment des validations avec du code prêt à l'emploi.

  • Le produit est construit et testé fréquemment - cela permet de trouver les nouveaux bogues dès que possible.

La procédure de fusion est plutôt coûteuse dans SVN. Complication de workflow supplémentaire peut entraîner une fusion douloureuse. BTW, certaines équipes font face à cela avec succès.

Je vous recommande également de jeter un coup d'œil aux systèmes de contrôle de version distribués. Ce message de Joel Spolsky fournit une description détaillée de leurs principaux avantages: http://www.joelonsoftware.com/items/2010/03/17.html

En répondant à votre question particulière, je peux suggérer ce qui suit (BTW, je ne peux pas voir toute la procédure de développement, donc cela peut être non applicable) :

  • Le développement actif est effectué dans le réseau. La version du réseau est installée sur les serveurs de test. Lorsque le produit est accepté pour publication, une nouvelle branche est créée. Cette version est installée sur le serveur de production.

  • De plus, le développement du produit se fait également dans le tronc.

  • Les correctifs sont réalisés dans la branche correspondante. La version de branche est testée sur des serveurs de test puis livrée en production.

1

Le tronc représente généralement (mais pas toujours) la base du code actif de la ligne principale à laquelle tout le monde contribue au cours du développement normal. Les branches sont créées en écartant le tronc (ou une autre branche). Le soutien de Subversion n'est pas terrible (même après avoir résolu quelques problèmes majeurs au cours des dernières années) et la plupart des équipes l'évitent, ce qui signifie malheureusement qu'elles sont généralement piégées sur le tronc pour tout leur travail.

Une approche pratique que vous pouvez utiliser est de créer une branche de publication à chaque fois que vous la libérez. Cela permet à l'équipe de continuer à développer le produit sur le tronc tandis que les équipes de support peuvent corriger les bogues avec le produit publié sur la nouvelle branche. Cela fonctionne généralement bien car il n'y a pas beaucoup d'activité de fusion entre le tronc et la branche de publication actuelle, et quand c'est le cas, il est rarement de nature structurelle (les déplacements, les renames, etc. ont un effet horrible sur la fusion et la fusion dans Subversion) .

+0

merci pour la réponse. Dans mon cas, que suggérez-vous. production est le code principal utilisé par les utilisateurs et stage02 et stage03 où UAT est fait. Alors, comment devrait être la structure. ce qui devrait être le tronc et ce qui devrait être stage02 et stage03 et les données du système local. – Hacker

+0

Dans le modèle que je décris, chaque étape, à l'exception de la production, utilise le coffre, mais seulement des versions différentes. Les branches ne sont utilisées que pour appliquer des corrections de bogues aux versions publiées, et bien sûr la production utilise la branche de publication actuelle. Ce n'est pas idéal, je le sais, mais franchement, j'ai peu confiance dans les capacités de fusion/fusion de Subversion. Si vous voulez la chose sensée, vous devez vraiment passer à un VCS distribué comme Mercurial ou git. Je pense que git est un outil bien meilleur, bien que son support Windows soit loin d'être aussi raffiné que celui de Mercurial, rendant l'appel difficile si vous développez sur Windows. –

+0

Mais Mercurial et git sont deux bien meilleurs choix que Subversion. –

Questions connexes