Plusieurs Dépôts SVN ou seul référentiel d'entreprise
Devrions-nous avoir un référentiel unique pour l'ensemble de la société, qui contient de nombreux projets de développement, ou d'une base de projet par projet? Toutes les idées sur l'expérience et les meilleures pratiques?
- dans mon expérience, vous pourriez raisonnablement aller de toute façon.
- Dans notre organisation, nous avons de nombreux projets indépendants, la plupart du temps .NET. Nous envisageons à l'aide de référentiels au niveau de la solution. De cette façon, les projets liés à l'seraient dans la même repo et de partager les numéros de révision, mais pas de projets indépendants. Je pense que ce qu'il devrait descendre à l'est de garder les choses liées ensemble. Si tous vos projets sont liés, alors l'un des pensions de sens. Si non, alors il n'a plus de sens.
Vous devez vous connecter pour publier un commentaire.
Personnellement, je préfère largement distincte référentiel par projet. Il y a plusieurs raisons:
Les numéros de révision. Chaque projet de référentiel de séparer les révisions de la séquence.
Granularité. Avec dépôt par le projet que vous juste ne pouvez pas faire un commit dans différents projets ayant le même numéro de révision. Je suppose qu'il est plus comme avantage, tandis que quelqu'un pourrait dire que c'est un défaut.
Référentiel taille. Quelle est la taille de votre projet? A-t-elle binaires sous contrôle de code source? Je parie que c'est. Par conséquent, la taille est importante - à chaque révision de fichier binaire augmente la taille du dépôt. Finalement, elle devient maladroit et il est difficile à soutenir. Fine politique de fichiers binaires de stockage doit être pris en charge, et d'administration supplémentaires fournis. Quant à moi, je n'ai pas encore trouver comment pourrais-je les supprimer complètement de fichier binaire (commis par certains stupide d'utilisateur) et son contenu, l'histoire de référentiel. Avec dépôt par projet, il serait plus facile.
Intérieure organisation du dépôt. Je préfère fine, très organisé, autonome, structuré dépôts. Il y a un diagramme illustrant général (idéal) approche du référentiel de processus de maintenance. Je crois que vous conviendrez qu'il n'est PAS POSSIBLE d'utiliser "tous les projets dans l'un des pensions de l' " approche. Par exemple, ma première structure de référentiel (chaque dépôt de projet devrait avoir) est:
Des pensions de l'administration. 'Dépôt par projet' a plus de possibilités aux utilisateurs l'accès à la configuration. Il est plus complexe cependant. Mais il est également utile: vous pouvez configurer les référentiels à utiliser le même fichier de configuration
Pensions De Soutien. Je préfère la sauvegarde des dépôts séparément. Quelqu'un dit que dans ce cas, il n'est pas possible de fusionner les informations à partir d'un repo dans l'autre. Pourquoi sur la terre, vous aurait besoin de ça? Si cette fusion est nécessaire montre que l'approche initiale de la source de contrôle est mauvais. L'évolution du projet suppose ultérieure projet de séparation des submodules, pas dans l'autre sens. Et je sais qu'il y a de l'approche pour le faire.
svn:externals. 'Dépôt par projet" approche encourage la propriété svn:externals d'utilisation. C'est une situation saine lorsque les dépendances entre les projets et les submodules est établie à l'aide des liens souples, qui svn:externals est.
Conclusion.
Si vous voulez garder le contrôle de source simple, utilisez un référentiel.
Si vous voulez faire des logiciels de gestion de la configuration de DROITE:
PS. Par la façon dont, malgré que je travaille avec SVN tout le temps et je l'aime, 'dépôt par projet" l'approche est pourquoi je vois DCVS systèmes plus attrayants de l'organisation du dépôt de point de vue. Dans DCVS repo est le projet par défaut. Il n'y a même pas de question "simples vs multiples" possible, il serait tout simplement absurde.
J'ai trouvé que le fait d'avoir un seul référentiel Subversion sida dans:
projets, vous pouvez ne pas être directement impliqué dans.
créer un nouveau projet, et vous pouvez supprimer tous les projets sans avoir peur de perdre
l'enregistrement de la Subversion.
EDIT:
D'autres raisons:
id, sans avoir besoin de spécifier le projet).
Je recommande fortement de ne pas utiliser un référentiel par projet. Au sein d'un seul référentiel subversion, vous pouvez déplacer et copier des données et de ce qu'il faudra retenir de son histoire. Si vous décidez qu'un morceau de code qui a commencé comme un backend outil est fusionnée à l'extrémité avant, et ceux qui sont dans des référentiels différents, ce n'est pas une opération de subversion savez rien à ce sujet. Ce sera comme si vous avez ajouté quelque chose à la fin de devant de pas. Cela signifie également que vous ne pouvez pas faire fusionne si vous avez besoin de maintenir temporairement les deux versions du code.
Il est à noter que tous les exemples dans la svn livre suppose que tout est dans un seul référentiel.
Il y a une question distincte de savoir si l'utilisation /trunk/projet1 /trunk/projet2, /branches/projet1-r1 ou à utiliser /projet1/tronc, /projet1/branches/r1 /projet2/tronc. Généralement, la deuxième est plus facile de garder une trace de.
La meilleure raison de ne pas tout mettre dans un seul référentiel, c'est que le contrôle d'accès est dur de faire plus finement grainé que dans le référentiel de niveau. Possible, oui, mais pas aussi facile. Nous avons actuellement deux principaux référentiels:
Cela dépend de la façon interdépendante vos applications/projets sont dans l'organisation, et aussi comment les grandes bases de codes sont.De sorte qu'il se résume à la façon dont on définit un "projet" au sein de votre organisation. Partagé base de code, pour les composants partagés partagés équipes, partagé des cycles de publication, peuvent influencer la façon dont vos dépôts besoin d'être structuré.
Pour des raisons de simplicité, je définir un projet comme avoir un organisme indépendant de la base de code, la libération de la timeline, et/ou appartenant à un outil/de l'application.Si c'est le cas, je préfère avoir un référentiel par projet. De cette façon, il n'y a plus de liberté pour définir et mettre en œuvre des politiques/des restrictions d'accès par projet.
Si j'avais un référentiel unique des ballonnements au fil du temps ..j'ai peut-être également besoin de vous soucier de l'espace de travail le temps de validation, etc., surtout si le code pour tous les projets sont mixtes. Si une application/outil/projet est terminé/abandonné/obsolète/migré, il peut y avoir plus de contrôle sur l'administration des aspects si il y a séparation au niveau du projet.
La structuration d'un projet de référentiel basé sur ses besoins uniques peuvent également être plus facile si il ya un référentiel par projet. Chaque projet peut avoir des besoins spécifiques, qui peuvent influer sur la gestion de la configuration des politiques (ramification, l'étiquetage, les conventions de nommage, CI, etc inclus), suivi pour chaque projet. Ce n'est pas à dire que vous ne pouvez pas faire tout ce dossier-sage au sein d'un référentiel unique. Vous pouvez. On ne conserve que les choses les plus simple d'avoir un nettoyeur de séparation - c'est tout.
Vous pouvez tenir compte de tous ces facteurs afin d'évaluer les frais administratifs généraux, vous pouvez vous retrouver avec, basé sur votre installation spécifique.
Cela dit, si tous les projets sont de petite taille, et sont interdépendants , exigeant des références croisées, de la croix de suivi, le mouvement à l'intérieur de chaque d'autres, etc., alors, vous êtes mieux avec un seul repo et un seul dossier par le référentiel.
Je voudrais avoir un référentiel pour le projet, juste pour le plaisir de la révision numéros par projet. Vous pouvez d'installation de SVN pour être servi, de sorte que tous les projets peuvent être accessibles à partir d'un point d'accès unique à l'aide d'Apache et DAV SVN (avec SVNParentPath directive).
Très bon, perspicace de réponses, mais je veux juste ajouter mon grain de sel:
Je pense que ça dépend de la taille de votre projet. Nous avons essayé les deux approches, mais finalement réglé avec un grand dépôt.
Contre:
Pros:
À mon humble avis (et à propos de notre projet particulier) les avantages emporte sur les inconvénients.
Si vous utilisez Subversion, vous pouvez avoir plusieurs référentiels sous le même domaine avec plusieurs projets de chacun.
Donc il faudrait ressembler à ceci
Projet1 pourrait répondre avant la fin de code et contient des sous-projets tels que les admin/et web/
Project2 serait backend et contient divers outils et applications de surveillance
Si vous utilisez quelque chose comme Git, chaque dépôt doit être d'un seul projet.
La décision peut être basée sur la complexité du projet ainsi. Si vous êtes à partir d'un énorme effort qui sera seprarate de la plupart tout ce que vous aurez à travailler sur, et il aura une grande équipe de développeurs travaillant sur lui, il peut faire sens pour lui donner un distinct des pensions.
Pour les équipes de travailler sur un certain nombre de petits projets à la fois, un référentiel unique fournit un mécanisme simple de tout gérer en un seul endroit (sauvegarde, de recherche, etc). La centrale repo rend également le référentiel lui-même semble un peu plus "concret", car il ne sera pas jeté une fois qu'un projet est terminé ou abandonné.
Tout dépend de la façon dont beaucoup de projets que vous avez, la taille de votre organisation, comment les projets sont, et ainsi de suite. Si vous faites partie d'une grande équipe avec un couple de douzaine de projets, un référentiel par projet va être assez lourd à gérer.
En fonction du type de travail de votre organisation, une autre option est d'avoir un référentiel par client. Là où je travaille, nous avons actuellement quatre référentiels - une pour les projets qui sont complètement à l'intérieur de nous, l'un pour le logiciel que nous vendons, et deux qui sont totalement spécifiques aux clients pour lesquels nous produire des logiciels applicables seulement à eux. C'est une tentative de "meilleur des deux mondes" solution - nous n'avons pas un énorme référentiel qui contient tout et a un numéro de révision dans les milliards (j'exagère évidemment!), mais nous ne disposons pas des dizaines de piddly peu de référentiels de traîner avec un projet dans chaque.
Pour mon organisation, je suis allé à mi-chemin, la création de plusieurs référentiels de codage différents "domaines". Je savais à l'avance que chaque référentiel contiendrait des projets qui pourraient être assez distincts les uns des autres.
J'ai fait les deux et dans les deux cas, parfois je souhaite que j'avais choisi une autre méthode...
J'ai installé sur un référentiel est une bonne solution. Notez que si j'étais dans une grande entreprise, j'aimerais revoir.
Je travaille dans une entreprise qui fonctionne pour beaucoup de clients avec des règles strictes. Pour le moment, nous avons environ 130 développeurs. Nous avons un projet essentiel qui est personnalisé pour chaque client a des besoins. Et nous avons un énorme dépôt svn. Il serait douleur dans le cul, si nous devons découvrez l'ensemble de la direction, mais notre stratégie est de déplacer les projets de la commune de la branche et de quitter le travail uniquement pour les commandes du commutateur. 🙂 De cette façon, tout ce qui peut être conservé dans un référentiel unique.
Mon seul souci était le fractionnement d'un référentiel de plusieurs référentiels si nécessaire en cas de outsorcing partie de l'œuvre, ou la vente de l'ensemble du projet jusqu'à ce que j'ai trouvé ceci:
http://www.mugo.ca/Blog/Splitting-a-Subversion-repository-into-multiple-repositories
Donc je pense que svn switch soulage la douleur de longue caisse (on remplace uniquement les projets souhaités), mais nous pouvons avoir un seul référentiel. Mais, si encore nécessaire, on peut extraire un ensemble de composants permettant de séparer référentiel.