Nous sommes une organisation composée d'environ 200 développeurs qui travaillent en continu sur un seul produit (en utilisant le contrôle de révision Git) qui devrait sortir à une certaine date.
En raison du grand nombre de développeurs, nous essayons de créer des équipes «interfonctionnelles» avec environ 10 développeurs dans chaque équipe, ce qui donne environ 20 équipes de développement dans l'organisation.
Étant donné que nous souhaitons maintenir un "standard élevé" continu (c'est-à-dire lorsque le développeur effectue un pull, le produit doit au moins être compilable, etc.) du produit dans le référentiel principal, nous aimerions utiliser une sorte de portes de qualité.
Je ne sais pas trop comment formuler la question, mais je me demande si je pourrais obtenir des conseils sur les méthodologies de développement pour un si grand groupe de développeurs travaillant sur un seul produit.
À notre avis, une extrémité du spectre consiste à permettre à chaque développeur de s’engager directement dans le référentiel principal, mais nous craignons qu’en raison du nombre élevé de développeurs / commits, le «référentiel principal» puisse être constamment en rupture, en raison nous ne pouvons pas avoir une «porte de qualité» exigeante pour chaque commit.
L'autre extrémité du spectre pourrait être (nous pensons que Linus Torvalds / Linux le fait) un arbre ou une structure pyramidale, où le "référentiel principal" n'a que trois sources d'extraction, ces trois n'ont qu'une poignée de sources d'extraction de confiance, etc. Cependant, nous pensons qu'avec une structure comme celle-ci, les changements ont une longue chaîne à gravir pour entrer dans le "référentiel principal". De plus, si un conflit de fusion se produit, le problème se pose sur un autre développeur que le "développeur d'origine".
Avec toutes ces informations et opinions exprimées, comment pouvons-nous apprendre et lire les méthodologies de développement recommandées pour tant de développeurs? Comment les grandes organisations (Microsoft, Facebook, Ubuntu, etc.?) Structurent leur développement?