Nous nous sommes tous énervés de svn à hg et comme le workflow de développement est plus ou moins vidé, il reste le système le plus difficile: le staging et l'intégration.Passage de Subversion à Mercurial - comment adapter le workflow et les systèmes de staging/intégration?
Espérons que cette question va un peu plus loin que votre commune «comment puis-je passer de xxx à Mercurial». S'il vous plaît pardonner longue question et probablement mal écrite :)
Nous sommes un magasin Web qui fait beaucoup de projets (principalement PHP et Zend), nous avons donc un énorme svn repo, avec comme plus de 100 dossiers, chacun représentant un projet avec c'est propre tags, branches et tronc bien sûr. Sur notre serveur d'intégration et de test (où QA et clients regardent les résultats de travail et les tests), tout est très automatisé - Apache est configuré pour prendre automatiquement de nouveaux projets en créant vhost pour chaque projet/tronc; scripts de migration mysql là aussi dans le coffre et les développeurs peuvent les appliquer via une interface web simple. Longue histoire courte de notre flux de travail est maintenant:
- Code Checkout, travailler, commettras
- Run mise à jour sur le serveur via l'interface Web (cela ne essentiellement svn sur serveur sur un projet particulier et exécuter également DB- script de migration si nécessaire)
- change d'assurance qualité sur le serveur
Cette approche est certainement suboptimale pour les grands projets quand nous avons 2+ développeurs travaillant sur le même code. Se ramifier en svn ne faisait que causer plus de maux de tête, et donc passer à Mercurial. Et voici où la question se pose - comment organiser un serveur de staging/intégration/test efficace pour ce type de travail (où vous avez beaucoup de projets, disons que seul développeur pourrait travailler sur 3 projets différents en 1 jour).
Nous avons décidé d'avoir essentiellement la production de suivi de branche par défaut, puis d'effectuer tous les changements dans les branches individuelles. Dans ce cas, comment pouvons-nous automatiser les mises à jour de mise à jour pour chaque branche? Si plus tôt pour un projet nous travaillions presque toujours sur le tronc, nous avions besoin d'une DB, d'un vhost, etc. Maintenant, nous parlons potentiellement des N-bases de données par projet, des configs N-vhost, etc. exécuter phpDocumentor et/ou tests unitaires)? Devrait-il être fait sur le «défaut»? Sur les branches?
Je me demande comment les autres équipes ont résolu ce problème, peut-être quelques bonnes pratiques que nous n'utilisons pas ou que nous ignorons?
Notes complémentaires:
probablement utile de mentionner que nous avons choisi Kiln en tant que service d'hébergement de prise en pension (la plupart du temps, puisque nous utilisons FogBugz de toute façon)
Réponse beaucoup plus détaillée que la mienne. +1 J'aime la poussée active traitée automatiquement sur le serveur distant. – VonC
Merci VonC et Ry4an - vos deux réponses sont vraiment très utiles. Je me suis dit que je pensais dans la bonne direction (heureusement :) –