Je m'occupe d'un système basé sur le Web interne (Java, JSP, Mediasurface, etc.) qui est constamment utilisé (24/5).Besoin de conseils ou de pointeurs sur les stratégies de gestion des versions
Les utilisateurs lèvent des tickets pour des améliorations, des corrections de bugs et d'autres changements métier. Ces problèmes sont validés individuellement et attribués à l'un des trois ou quatre développeurs.
Une fois le problème terminé, il est généré et le code est uniquement validé par SVN. Les fichiers modifiés (modèles, html, classes, jsp) sont ensuite copiés sur un serveur de dev et validés dans un référentiel différent d'où ils sont extraits sur le serveur UAT pour être testés. (cela nécessite souvent le redémarrage du service Tomcat et parfois le service Mediasurface).
Les utilisateurs testent puis rejettent ou approuvent la version. S'il est approuvé, les fichiers édités sont extraits sur le serveur Live et le même processus que pour l'UAT.
En cas de rejet, le développeur effectue les modifications appropriées et recommence le processus de validation.
Tout cela est fait manuellement sans beaucoup de contrôle. Lorsque des développeurs différents travaillent sur des fichiers similaires, les modifications sont parfois écrasées par des builds sur du code non synchronisé. Dans d'autres cas, les modifications dans UAT sont déplacées pour vivre en erreur car elles sont mélangées dans des fichiers associés à une version validée. Je voudrais passer à un processus plus contrôlé et automatisé où tous les fichiers de code source et de sortie sont conservés dans SVN et libérés en Dev, UAT et Live gérés par un système CI (Nous avons TeamCity en interne pour notre. Applications NET).
Ma question est sur la façon de gérer les versions de plusieurs changements où certains seront signés et déplacés et d'autres rejetés et retournés au développeur. Les modifications peuvent concerner des fichiers qui se chevauchent et la fusion de chaque version en Release Branch signifie que les modifications rejetées doivent être supprimées de la branche.
Y at-il un moyen de gérer cela en utilisant SVN et CI ou devrais-je simplement vivre avec le système actuel.