Je me suis posé les mêmes questions lorsque nous avons implémenté Subversion ici - environ 20 développeurs répartis sur 4 à 6 projets. Je n'ai trouvé aucune bonne source avec «la réponse». Voici quelques éléments de l'évolution de notre réponse au cours des 3 dernières années:
- s'engager aussi souvent que nécessaire; notre règle de base est de s'engager chaque fois que vous avez effectué un travail suffisant pour que ce serait un problème de devoir le refaire si les modifications étaient perdues; parfois je m'engage toutes les 15 minutes environ, d'autres fois cela peut prendre des jours (oui, parfois il me faut un jour pour écrire 1 ligne de code)
- nous utilisons des branches, comme l'une de vos réponses précédentes l'a suggéré, pour différents chemins de développement; pour le moment, pour l'un de nos programmes, nous avons 3 branches actives: 1 pour le développement principal, 1 pour l'effort encore inachevé de paralléliser le programme et 1 pour l'effort de le réviser pour utiliser les fichiers d'entrée et de sortie XML;
- nous n'utilisons que très peu de balises, même si nous pensons que nous devrions les utiliser pour identifier les versions en production;
Pensez au développement suivant une seule voie. À un moment ou à un stade du développement, le marketing décide de publier la première version du produit, de sorte que vous plantez un drapeau dans le chemin étiqueté «1» (ou «1.0» ou quoi que ce soit). À un autre moment, une étincelle brillante décide de paralléliser le programme, mais décide que cela prendra des semaines et que les gens veulent continuer sur la voie principale en attendant. Donc, vous construisez une fourche sur le chemin et différentes personnes se promènent sur les différentes fourches.
Les drapeaux sur la route sont appelés «balises», et les fourches de la route sont là où les «branches» se divisent. Parfois aussi, les branches se rejoignent.
- nous mettons tout le matériel nécessaire pour construire un exécutable (ou système) dans le référentiel; Cela signifie au moins le code source et créer un fichier (ou des fichiers de projet pour Visual Studio). Mais quand nous avons des icônes et des fichiers de configuration et tout ce que vous voulez, cela va dans le référentiel. Certains documents se retrouvent dans le repo; certainement toute documentation telle que les fichiers d'aide qui pourraient faire partie intégrante du programme le fait, et c'est un endroit utile pour mettre la documentation du développeur.
Nous y installons même des exécutables Windows pour nos versions de production, afin de fournir un emplacement unique aux personnes à la recherche de logiciels - nos versions Linux sont envoyées sur un serveur et n'ont donc pas besoin d'être stockées.
- nous n'avons pas besoin que le référentiel soit à tout moment capable de fournir une dernière version qui se construit et s'exécute; certains projets fonctionnent de cette façon, d'autres non; la décision appartient au chef de projet et dépend de nombreux facteurs, mais je pense qu'elle échoue lors de modifications majeures d'un programme.