tl; dr - On dirait qu'il est temps de passer aux ligues majeures. Mettre du rouge à lèvres sur un cochon ne le rend pas plus joli, sauf si vous êtes dans ce genre de chose ...
Le problème des personnes
Le premier problème est la synchronisation de validation. SI plusieurs personnes travaillent sur le même code en même temps, vous n'avez besoin que d'une seule règle pour éviter les problèmes:
Rule 1: Always pull before you merge/rebase
En ce qui concerne DVCS, il est difficile d'apporter des modifications à une branche distante (c'est-à-dire le référentiel principal) et très facile d'apporter des modifications au local. Chaque personne est responsable de faire en sorte que ses propres ajouts de code s'intègrent dans le grand ensemble sans problèmes. À moins que 2 personnes ne s'engagent en même temps, vous ne devriez pas en faire l'expérience. L'accès de validation au maître d'origine / distant doit être limité à quelques développeurs et ils doivent extraire les modifications des autres développeurs via des branches de suivi à distance.
Le problème du code
Comment savez-vous que les modifications que vous apportez ne cassent pas le code?
Réponse simple ... Écrivez des tests pour prouver qu'ils ne le font pas. Si vous ignorez l'école de pensée TDD (Test Driven Design), tout l'intérêt des tests est d'ajouter un niveau de vérification qui vous permet de changer le code sans le casser.
Rule 2: Don't make assumptions, write proofs (ie tests).
En plus de cela, la gamme complète de tests doit être exécutée avant de passer au maître d'origine / distant.
Gardez vos commits aussi petits et concis que possible. De cette façon, si vous devez annuler une modification qui a cassé quelque chose plus tard, vous économiserez d'avoir à réimplémenter les parties qui n'ont pas cassé le code.
Vous devrez peut-être d'abord une restructuration organisationnelle
Si les solutions ci-dessus ne peuvent pas être facilement appliquées, il y a probablement quelques problèmes avec la structure de développement qui doivent être résolus en premier.
Le propriétaire du projet doit être le portier. S'il y a des problèmes de synchronisation de validation, il y a probablement trop de personnes avec un accès de validation. Même sur des projets massifs comme le noyau Linux, seule une poignée de développeurs ont validé l'accès au référentiel maître d'origine / distant. Il existe en fait plusieurs niveaux de référentiels pour gérer les validations. Au lieu d'un modèle de validation à une seule couche où tout le monde applique ses modifications à l'origine, le modèle hiérarchique a des contrôleurs qui récupèrent les modifications et vérifient leur qualité avant de les inclure dans le projet. Le modèle de validation hiérarchique peut évoluer beaucoup plus grand et plus efficace que le modèle à couche unique sans sacrifier la qualité.
Pour les développeurs qui ne reçoivent pas un accès en , ils devraient apprendre à créer leurs propres branches de suivi à distance (git et gitorious sont bons pour cela) de sorte que les développeurs qui font ont un accès en peut facilement tirer / intégrer des branches dans l'origine. Si les modifications sont minimes, les correctifs fonctionneront tout aussi bien.
La possibilité d'extraire des modifications avant d'effectuer une fusion / rebase suppose que vous ne développez pas sur votre branche principale locale. Le moyen le plus simple est de faire une traction initiale avant de commencer à coder, puis de faire tout votre travail sur cette branche. Le plus difficile est de le ramifier juste avant la fusion et de restaurer le master.
Définissez le style de codage du projet dans son ensemble et faites en sorte que les développeurs le suivent. Les développeurs contributeurs doivent écrire du code conforme aux standards / normes du projet pour minimiser le nettoyage. Le style de codage peut être une grande barrière d'ego dans un projet ouvert. Si aucune norme n'est définie, tout le monde codera dans son propre style préféré et la base de code deviendra très moche très rapidement.
Le mythe du "Mois de l'homme mythique"
Croyez-le ou non, les projets open source plus importants / plus réussis ne sont pas gérés comme une démocratie. Ils sont gérés comme une hiérarchie. Déclarer qu'un projet ne peut pas se développer efficacement au-delà de 8 à 10 développeurs est naïf. Si c'était vrai, alors les mégaprojets comme le noyau Linux n'existeraient pas. Le problème le plus profond est que donner à tout le monde un accès de validation rend la communication efficace trop difficile à gérer.
Le problème du mois mythique de l'homme peut en fait être surmonté. Vous avez juste besoin de gérer votre projet comme les militaires. Il existe de nombreux niveaux dans la hiérarchie, car il est de notoriété publique que les individus ne sont vraiment efficaces que pour gérer les communications avec une poignée de personnes. Tant qu'aucun individu n'est responsable de la gestion du travail de plus de 5 à 7 personnes, le système peut évoluer indéfiniment.
Cela peut limiter les développeurs les plus expérimentés à faire plus d'intégration et de conception / planification de niveau supérieur, mais ce n'est pas une mauvaise chose. Une partie de l'intensification consiste à prendre la décision de décider que le projet a besoin d'un plan à long terme. Les personnes aux niveaux les plus élevés qui investissent le plus (le temps est aussi une ressource) dans l'avenir des projets devraient être chargées de prendre les grandes décisions.
C'est agréable d'entendre parler d'un projet open source qui connaît des difficultés croissantes. Félicitations et bonne chance.