2016-08-08 6 views
0

Nous avons actuellement une grande solution en C# qui comprend quelque 40 projets.Vérification individuelle des sous-projets de la solution .net à SVN

Une deuxième solution pour un autre client est presque identique, et utilise plusieurs des mêmes projets avec certains omis, et d'autres inclus qui ne sont pas présents dans la première solution. Pour simplifier la gestion des versions de code, je souhaite vérifier chaque projet contenu dans la solution SVN en tant que projets individuels, mais aucun des clients SVN que j'ai essayés ne semble prendre en charge sans ajouter manuellement chaque projet.

Le résultat souhaité est:

1) Ouvrez la solution pour le client A, et apporter des modifications à un projet commun 2) Valider les modifications, puis fermez la solution. 3) Ouvrez la solution pour le client B. Les modifications apportées à '1' sont disponibles dans la solution Client B. 4) Apporter des modifications à un projet spécifique au client B. Lorsqu'elles sont validées, les modifications de '1' ne sont pas affichées comme étant en attente.

J'ai essayé AnkhSVN, et VisualSVN, mais dans les deux cas, la sélection de projets et l'exécution Add selected projects to Subversion me donne la possibilité d'ajouter la solution racine, mais pas les projets individuellement.

Le plus proche que j'ai réussi à obtenir est avec Tortoise, mais cela impliquait d'ajouter chaque projet manuellement ce qui n'est pas une option réalisable pour autant de projets source. EDIT: Comme suggéré, l'utilisation d'une solution commune et de deux solutions distinctes spécifiques au client résoudrait le problème de validation du code sur SVN, mais nécessiterait une compilation contre les DLL qui devraient être compilées à l'avance.

Nous avons d'abord expérimenté cette approche, mais en raison de problèmes avec VS qui ne rechargeaient pas correctement les DLL parfois, nous avons eu des problèmes avec le débogage. Je ne suis pas certain qu'il soit possible d'ajouter des projets de cette façon en utilisant un processus automatisé, mais j'accueillerais volontiers des suggestions avant de mordre la balle et d'écrire du code pour le faire.

Merci beaucoup.

Répondre

1

Je recommande 3 solutions globales dans ce scénario:

  1. client une solution
  2. solution client B
  3. solution commune

Chacun peut être soutenu par son propre référentiel. Vous pouvez maintenant publier votre code commun sous la forme d'un ensemble de DLL (ou vous pouvez avoir envie de créer un serveur Nuget privé et de transformer votre solution commune en un paquet Nuget) et le référencer à partir des solutions client.

+0

Je l'ai considéré comme une option. Le problème est que lorsque nous testons, nous avons besoin du code pour l'ensemble de la solution présente dans l'EDI pour le débogage. Initialement, nous avons compilé avec des DLL, mais nous avons trouvé des problèmes avec le débogage. Jusqu'à présent, un repo Nuget pour le code commun est le plus proche de ce que je cherche à atteindre, mais ce n'est pas encore tout à fait là. Je ne suis pas certain que SVN ait jamais été conçu pour être utilisé de cette façon. – Alex

+0

C'est ce que les tests sont pour :) – Dave

+0

Yup, mais pour l'instant, nous n'avons pas beaucoup de tests unitaires pour le codebase.J'ai travaillé à la refactorisation et à la mise en place de tests, mais les contraintes de temps ont fait des progrès très lents. Nous utilisons un script de génération pour générer la version finale, mais cela ne pousse pas encore les artefacts compilés vers un serveur. Essentiellement, j'essaie d'obtenir un comportement similaire en tant que projet Maven (mais sans l'enfer de POM). – Alex