Dans mon entreprise, tous nos développements (corrections de bugs et nouvelles fonctionnalités) se font sur des branches distinctes. Une fois terminé, nous l'envoyons à QA qui le teste sur cette branche, et quand ils nous donnent le feu vert, nous le fusionnons dans notre branche principale. Cela pourrait prendre entre un jour et un an.
Si nous essayons de resserrer tout refactoring sur une branche, nous ne savons pas combien de temps il sera "hors", donc cela peut provoquer de nombreux conflits lorsqu'il est fusionné.
Par exemple, disons que je veux renommer une fonction parce que la fonctionnalité sur laquelle je travaille utilise beaucoup cette fonction, et j'ai trouvé que son nom ne correspond pas vraiment à son objectif (encore une fois, ce n'est qu'un exemple). Alors je fais le tour et trouve chaque utilisation de cette fonction, et je les renomme tous sous son nouveau nom, et tout fonctionne parfaitement, alors je l'envoie à QA.
Pendant ce temps, de nouveaux développements se produisent, et ma fonction renommée n'existe sur aucune des branches qui sont dérivées de la principale. Lorsque mon problème sera fusionné, ils vont tous se casser.
Y a-t-il un moyen de gérer cela?
Ce n'est pas comme si la direction approuvait un problème de refactorisation uniquement, il doit donc être intégré à d'autres travaux. Il ne peut pas être développé directement sur le principal car tous les changements doivent passer par l'AQ et personne ne veut être le con qui a cassé le principal afin qu'il puisse faire un peu de refactoring non essentiel.