Un dépôt SVN ou plusieurs?
Si vous avez plusieurs projets indépendants, est-ce une bonne idée de les mettre dans le même référentiel?
myRepo/projectA/trunk
myRepo/projectA/tags
myRepo/projectA/branches
myRepo/projectB/trunk
myRepo/projectB/tags
myRepo/projectB/branches
ou voulez-vous créer de nouveaux référentiels pour chaque?
myRepoA/trunk
myRepoA/tags
myRepoA/branches
myRepoB/trunk
myRepoB/tags
myRepoB/branches
Quels sont les avantages et les inconvénients de chacun? Tout ce que je peux actuellement penser, c'est que vous mêlent les numéros de révision (et alors?), et que vous ne pouvez pas utiliser svn:externals
, sauf si le dépôt est fait à l'externe. (je crois?)
La raison pour laquelle je demande c'est parce que je suis en train d'étudier la consolidation de mes multiples repos dans un, depuis mon SVN hôte a commencé à facturer par repo.
- J'ai aussi posé la même question il y a un moment, donc si vous avez besoin de plus d'aide il peut y avoir quelques-uns ici: stackoverflow.com/questions/130447/...
- oh zut, désolé pour la dupe alors. J'ai essayé de chercher, je te le jure!
- Pas de probs 🙂 je ne suis pas inquiet, juste mentionné, donc si vous n'obtenez pas l'aide dont vous avez besoin ici, alors il pourrait y avoir eu certains de plus d'aide dans mon Q
- nickf, svn:externals fonctionnent très bien avec un grand dépôt. Il vous suffit de pointer vers le sous-répertoire dans le repo avec le code qui vous intéresse.
- Dans le fonctionnement normal de cadre commercial, bien sûr, évidemment, vous auriez plusieurs titres. (De sorte que, de toute évidence, vous pouvez être certain de différents clients/groupes peuvent seulement voir leurs propres projets différents.) Imaginez que l'un de la gros gratuit-subversion des sites où vous pouvez utiliser une subversion des pensions.... Pensez à la façon dont idiot il serait si seulement ils avaient un énorme pensions de titres au lieu d'un pour chacun de nous!!
Vous devez vous connecter pour publier un commentaire.
L'une ou plusieurs question personnelles ou organisationnelles préférence.
La gestion de plusieurs vs. unique provient essentiellement vers le bas pour le contrôle d'accès et d'entretien.
De contrôle d'accès pour un seul référentiel peut être contenue dans un seul fichier; Plusieurs référentiels sont peut nécessiter plusieurs fichiers. L'entretien a des problèmes similaires - un grand secours, ou un tas de petites sauvegardes.
- Je gérer mon propre. Il y a un référentiel, plusieurs projets, chacun avec ses propres balises, du tronc et des branches. Si l'on est trop grande ou que j'ai besoin d'isoler physiquement un client code pour leur confort, je peux créer rapidement et facilement un nouveau référentiel.
J'ai consulté récemment avec un relativement grand, ferme sur la migration de plusieurs systèmes de contrôle de code source de Subversion. Ils ont ~50 projets, allant de très faible à des applications d'entreprise et le site web de l'entreprise. Leur plan? Commencer avec un seul référentiel, de migrer vers plusieurs si nécessaire. La migration est presque terminée et ils sont toujours sur un référentiel unique, pas de plaintes ou de problèmes signalés à cause d'un référentiel unique.
Ce n'est pas un binaire, noir & blanc question.
Faire ce qui fonctionne pour vous - si j'avais été à votre place, je serais combiner des projets dans un seul référentiel aussi vite que je pouvais taper les commandes, parce que le coût serait un facteur important dans ma (très, très petit) de l'entreprise.
JFTR:
les numéros de révision dans la Subversion n'ont vraiment aucun sens en dehors du référentiel. Si vous avez besoin de donner des noms significatifs pour une révision, de créer une BALISE
Des messages de validation sont facilement filtrées par le chemin d'accès dans le référentiel, donc, la lecture de seulement celles liées à un projet particulier, est un exercice trivial.
Edit: Voir Lame's réponse pour plus de détails sur l'utilisation d'une seule autorisation/de configuration d'authentification pour SVN.
Pour votre cas spécifique d'un(1) dépôt est parfait. Vous permettra d'économiser beaucoup d'argent. J'encourage toujours les gens à l'utilisation d'un référentiel unique. Parce qu'il est semblable à un même système de fichiers: Il est plus facile
Il y a un seul point pour plusieurs référentiels: administration de l'énorme repos est mal à l'aise.
Dumping/chargement énorme repos prend beaucoup de temps. Mais comme vous ne le faites pas, toute administration, je pense qu'il ne sera pas votre préoccupation 😉
SVN échelles très bien avec les plus gros dépôts, il n'y a aucun ralentissement, même sur de gros (>100 GO), les référentiels.
De sorte que vous aurez moins de tracas avec un seul référentiel. , Mais vous devriez vraiment penser à l'opération de mise en page!
Je voudrais utiliser plusieurs référentiels. En plus de la question de l'accès de l'utilisateur, il rend également la sauvegarde et la restauration de plus facile. Et si vous vous trouvez dans une situation où quelqu'un veut vous payer pour votre code (et son histoire), il est plus facile de leur donner seulement un dépôt de vidage.
Je dirais que la consolidation des référentiels juste à cause de la charge des politiques de votre fournisseur d'hébergement n'est pas une très bonne raison.
Nous utilisation d'un référentiel unique. Mon seul souci était de l'échelle, mais après avoir vu ASF référentiel (700k révisions et de comptage), j'ai été assez convaincu de la performance ne serait pas un problème.
Nos projets sont tous liés, différents de verrouillage des modules qui forment un ensemble de dépendances pour une application donnée. Pour cette raison, un référentiel unique est idéal. Vous souhaitez peut-être les séparer trunk/branches/tags pour chaque projet, mais vous êtes toujours en mesure de atomiquement commettre un changement à l'échelle de l'ensemble de votre base de code à l'intérieur d'une seule révision. C'est génial pour le refactoring.
Sachez que lors de votre prise de décision, de nombreux SVN repos peuvent partager le même fichier de configuration.
Exemple (pris à partir du lien ci-dessus):
En shell:
Fichier: /var/svn/repos1/conf/svnserve.conf
Fichier: /var/svn/conf/authz
Je voudrais créer séparer les dépôts... Pourquoi? Les numéros de révision et des messages de commit sera tout simplement pas de sens si vous avez beaucoup de projets indépendants dans un seul référentiel, il sera à coup sûr un grand désordre dans le court terme....
Nous sommes une petite société de logiciels et nous utilisons un seul repo pour notre développement. L'arbre ressemble à ceci:
L'idée était que nous aurions client et interne de travail dans la même repo, mais nous avons fini par avoir notre entreprise comme un "client" de lui-même.
Cela a vraiment bien fonctionné pour nous, et nous utilisons Trac à l'interface. Les numéros de révision sont dans l'ensemble de pensions et non spécifiques à un projet, mais qui n'a pas d'effet sur nous.
Personnellement, j'avais créer de nouveaux référentiels pour chaque. Il garde le processus beaucoup plus simple et rend l'administration sur l'ensemble de la plus facile, au moins en ce qui concerne l'accès des utilisateurs et des sauvegardes. Aussi, il évite le global problème de numéro de version, donc le numéro de version est significative sur tous les projets.
Vraiment bien, vous devriez utiliser git 😉
une chose supplémentaire à considérer est le fait que l'utilisation de plusieurs référentiels de vous amener à perdre la capacité à avoir unifié d'enregistrement(svn log de commande) ce sera à elle seule une bonne raison de choisir un seul dépôt.
- Je utiliser TortuiseSvn et a constaté que le "Afficher le Journal" l'option est obligatoire de l'outil. bien que vos projets ne sont pas liés, je suis sûr que vous trouverez que le fait d'avoir une centralisation mondiale de la croix-des projets de l'information (chemins, id de bug, les messages et ainsi de suite....) c'est toujours utile.
Si vous plan ou de l'utilisation de l'outil comme le trac qui s'intègrent avec SVN, il est plus logique d'utiliser un repo par projet.
Semblable à la Lame des suggestions à propos du partage de fichiers, ici est un peu plus facile, encore moins une solution flexible. J'ai installé la nôtre comme suit:
Dans "bin", je garde un script appelé svn-create.sh qui va faire tout le travail de configuration de la création d'un dépôt vide. Je garde aussi le script de sauvegarde il.
Dans "repository_files", je garde la commune de la "conf" et de "crochets" répertoires que tous les dépôts ont sym liens. Ensuite, il y a seulement un ensemble de fichiers. Ce n'est d'éliminer la possibilité d'avoir granulaire, par projet accès sans rompre les liens, si. Ce n'était pas une préoccupation où j'ai mis cela en place.
Dernier, je garde le répertoire /var/svn sous contrôle de code source en ignorant tout dans svnroot. De cette façon, le référentiel de fichiers et les scripts sont sous contrôle de code source ainsi.
Ma suggestion est un. Sauf si vous avez de différents utilisateurs accédant à chacun, je dirais que l'utilisation de plusieurs.
Mais, encore une fois, ce n'est pas une bonne raison pour utiliser plusieurs.
Similaire à mlambie de l'aide d'un seul repo, mais est allé avec la structure de dossiers pour zoomer facilement à un type particulier de projets - web html en fonction des projets vs cs (C#) vs sql (SQL create/exécuter des scripts) vs xyz (Spécifique au Domaine des Langues comme l'afl (AmiBroker Formule de la Langue) ou ts (TradeStation)):
Remarque, j'ai tronc de vivre à l'intérieur des branches comme je le traiter comme la branche par défaut. La seule douleur est parfois lorsque vous voulez créer rapidement un autre projet, vous avez besoin pour construire le Nomduprojet/branches|tags structure. J'utilise l'app-paramètres simplement comme lieu de garder des Applications spécifiques fichiers de paramètres dans des pensions de donc facilement partageable pour les autres (et remplacer ClientName à VendorName et ProjectName à AppName dans cette structure de dossiers; et les branches|tags peut être utile pour les paramètres de balise à travers les différentes versions des produits des fournisseurs, trop).
La bienvenue à tous les commentaires sur ma structure, j'ai récemment changé à présent et jusqu'à présent assez heureux, mais parfois le trouver lourd pour maintenir les branches|tags structures par projet - en particulier si le projet est un projet d'installation simplement à l'Unité de Test d'un autre projet.