Les succursales devraient fonctionner correctement, d'après mon expérience de leur utilisation dans les évaluations pré-validées lors d'un travail antérieur.
Notez qu'à l'époque, nous n'utilisions les révisions avant validation que pour les correctifs critiques du code candidat de la version de production, donc il n'y avait pas beaucoup de branches (les modifications de routine étaient passées par les révisions post-validation).
Comme vous semblez utiliser des révisions avant validation pour toutes les modifications, vous devrez peut-être gérer un grand nombre de branches. Si vous vous attendez à ce que le développeur effectue un changement "révisable" par semaine en moyenne, vous finirez par avoir environ 50 succursales chaque année pour chaque développeur de l'équipe. Si vous utilisez de plus petits morceaux de travail - comme ceux qui prennent 1, 2, 3 ... jours - multipliez 50 par 2, 3, 5 ... en conséquence.
Voici quelques autres considérations à prendre en compte si vous le souhaitez de la meilleure façon .
1. gestion des cas lorsqu'un examen retardé bloque le code nécessaire pour les autres membres de l'équipe
Établissez, surveillez et résolvez les conflits liés aux délais de révision du code. Si je me souviens bien des examens préalables à la validation des changements de routine que j'ai traités dans l'un des projets précédents, le délai raisonnable est d'environ 3 jours et le temps de commencer à s'inquiéter est lorsque l'examen n'est pas terminé plus d'un jour après la soumission.
À titre de comparaison, lors des revues post-commit, ces exigences sont beaucoup plus détendues (j'utilise un délai de 2 semaines et je commence à m'inquiéter après 1 semaine) - mais puisque vous ciblez les revues pré-commit, ce n'est probablement pas intéressant.
2. fusionner les conflits lors de la soumission du code révisé
Que faire si la validation du code révisé est bloquée par des modifications conflictuelles validées par quelqu'un d'autre pendant que le code attendait la révision?
Quelques options à considérer sont
- revenir au début et demander aux développeurs de réimplémenter et de revoir le changement
Dans ce cas, vous devrez peut-être remédier à un impact négatif sur le moral de l'équipe que cela pourrait (aura!) avoir.
- céder la responsabilité de la fusion à un autre membre de l'équipe («maître de fusion»)
Dans ce cas, vous devrez également décider si les fusions en elles-mêmes doivent passer par un examen préalable à la validation ou non - et si oui, que faire dans le cas où cette fusion rencontre à son tour un autre conflit.
- ignorer les modifications apportées au code révisé au stade de la fusion
Dans ce cas, vous devrez peut-être remédier à un impact négatif sur le moral de l'équipe lié au fait que le code engagé diffère de celui qui a été examiné.
- inventer un moyen d'éviter les conflits L'
approche directe consiste à n'autoriser qu'un seul développeur à la fois à modifier un ensemble particulier de fichiers - bien que cela ne vous protège pas du type de changements qui ne modifient pas directement les fichiers, mais les impactent par des changements d'API internes . Vous pourriez également découvrir que ce type de «verrouillage pessimiste» rend les changements à l'échelle du système et le refactoring en profondeur assez gênants.
À titre de comparaison, il n'y aurait pas de problèmes de ce type dans les révisions post-validation (car elles traitent de code déjà fusionné par définition) - mais puisque vous ciblez les révisions pré-validation, ce n'est probablement pas intéressant.
3. charger le développeur en attente d'examen
Établissez une politique explicite pour savoir si le développeur qui a soumis la révision doit passer à une nouvelle tâche ou faire autre chose (comme par exemple poursuivre le réviseur).
À titre de comparaison, les révisions post-validation n'ont guère besoin d'une politique explicite (car il est naturel de passer à la tâche suivante après avoir validé le code et en tenant compte du fait que la date limite de révision est d'une semaine ou deux) - mais puisque vous ciblez les révisions pré-validation, c'est probablement pas intéressant.