Je suis en train de concevoir une stratégie de branchement et de fusion pour mon projet (nous utilisons TFS). Le projet prévoit d'avoir plusieurs versions publiées. Actuellement, nous testons la v1.0alpha et travaillons sur la v2.0.
Le plan est le suivant :
- Après le feu vert imminent des testeurs, version v1.0 sera libéré pour un client.
- Version v1.1 (déjà en cours de développement) sera déployé auprès de 5-6 clients.
- Version v1.2 serait installé sur des dizaines de clients.
- etc.
Nous essaierons de forcer la mise à niveau des anciens clients vers les versions les plus récentes, mais en raison de la nature du projet et du marché, il peut s'écouler des mois (années ?) avant que les clients ne soient mis à niveau.
Nous voulons utiliser le gitflow standard mais cela semble plus approprié pour avoir une seule version. J'ai conçu une simplification de gitflow :
L'approche est la suivante :
- Si un client souhaite qu'un bogue soit corrigé, nous le ferons dans la branche Release de sa version et il devra passer à la dernière révision de sa version. Par exemple, un client de la version 1.0 qui a un bogue doit passer à la version 1.0.5. Si le bogue se produit dans d'autres versions, nous le corrigerons dans celles-ci.
- Si le client veut un nouvelle fonction nous le développerons dans la dernière version et les obligerons à faire une mise à niveau s'ils le souhaitent. Par exemple, les clients de la version 1.0.5 qui veulent la nouvelle version devront passer à la version 1.2.
- Si tous les clients d'une version donnée sont mis à jour, nous supprimons cette branche de la version. Par exemple, lorsque le client de la v1.0 sera mis à jour, nous supprimerons la branche de la version v1.0.
Mes questions, par ordre d'importance, sont donc les suivantes :
- Mon approche fonctionnera-t-elle ? Voyez-vous des problèmes ?
- Est-ce que git-flow a un modèle pour ce "scénario de versions multiples" ?
- Gitflow a une branche Master. Est-il acceptable de ne pas avoir de branche Master ? Pourrions-nous considérer les différentes branches de la version comme "Master" ?
- Comment allez-vous nommer les branches de Dev et de Releases ?