Flux de travail pour l'utilisation des submodules dans Visual Studio
J'ai quelques code partagé, je veux partager parmi un certain nombre de solutions. La plupart des exemples d'utilisation de la ligne de commande, mais je veux le faire à l'aide de Visual Studio 2013 (et/ou TortoiseGit)?
- SolutionShared
- .git
- Project1Shared
- Project2Shared
- Solution1
- .git
- ProjectFoo
- ProjectBar
- [SolutionShared]
- [Project1Shared]
- [Project2Shared]
- Solution2
- .git
- ProjectBaz
- ProjectQux
- [SolutionShared]
- [Project1Shared]
- [Project2Shared]
Ce que j'ai fait était de créer une nouvelle solution SolutionShared
, ajouter tous mon code partagé là, et l'ajouter à son propre repo git. J'ai ensuite utilisé TortoiseGit (que je ne pouvais pas comprendre comment le faire Visual Studio) pour ajouter, qui ont partagé des pensions comme un git sous-module de Solution1
et Solution2
.
1. Que dois-je faire dans Visual Studio?
Mes deux solutions ont maintenant une SolutionShared
répertoire. Dois-je simplement ajouter ses deux enfants de projets (Project1Shared
et Project2Shared
) dans Visual Studio?
2. Comment puis-je apporter des modifications au code partagé à partir de l'intérieur de la non-partagé projets
Si je suis dans l'un des non-solutions partagées et que vous modifiez quelque chose dans le sous-module, comment dois-je m'engager et de le pousser à revenir à la solution du repo ( SolutionShared
), de sorte qu'il est disponible pour toutes les solutions de référence?
OriginalL'auteur h bob | 2014-11-15
Vous devez vous connecter pour publier un commentaire.
Après beaucoup d'expérimentation...
Dans VS, ajoutez les projets partagés à partir de la sous-module de la solution. Ils semblent vivre "en dehors" de la décision des parents autant que la gestion des versions.
Si vous faites un changement à la sous-module de projets, ils sont locaux. Ils doivent être résolus et poussé à la source repo, et puis vous avez besoin de fusionner. Si vous apportez des modifications à la source, vous avez besoin pour tirer manuellement dans votre solution git du sous-module.
Problème est VS ne fait pas cela pour vous, alors vous avez besoin d'utiliser quelque chose comme TortoiseGit ou la ligne de commande.
submodules travail comme un charme sous TeamCity CI
vous pouvez obtenir tsf en ligne de PULL submodules ses sous paramètres avancés, c'est un peu dommage que VS client ne le fait pas.
yep, nous avons retiré de notre solution de contournement (quelques lignes dans powershell) une fois le sous-module de support livré avec tfs
avez-vous réussi à obtenir de VS de simplement travailler avec des submodules? par exemple un autre dev ouvre le projet et il tire le sous-modules, j'ai demandé ici, à la stackoverflow.com/questions/44498755/...
OriginalL'auteur h bob
Nous avons trouvé que le moyen le plus facile pour nous de le faire est de déplacer chacun de nos partagé des unités de code dans leur propre Projet Visual Studio et de mettre chaque partagés projet Visual Studio dans son propre repo.
Nous avons ensuite ajouter chacun de ces projets comme un sous-module à n'importe quelle Solution a besoin d'eux. Cela est utile, car beaucoup de nos projets peuvent être de très grande taille et partagent de nombreux morceaux de code. Nous avons largement utilisé les packages nuget à cette fin, en tant que bien, mais ont en général de meilleurs résultats et une meilleure conception/debug de l'expérience avec les submodules.
Beaucoup de choses ont changé chez Microsoft par rapport à Git dans les dernières années. Visual Studio Team Services (TFS en Ligne) et Sur les Prem-TFS (depuis TFS2015) les deux ont maintenant une bonne compréhension de la façon dont submodules de travail et vous pouvez maintenant le faire CI s'appuie, qui incorporent des submodules droit sorti de la boîte.
De soutien dans les prem TFS 2015 peut être un peu buggy, cependant. TFS Construire des références pour les submodules ont l'habitude de devenir corrompu résultant dans les versions que l'arrêt de travail sans avertissement jusqu'à ce qu'selon le sous-module est la faute est entièrement supprimé et ré-ajoutée - pas un processus amusant. Pour cette raison (parmi quelques autres), nous sommes maintenant à l'aide de VSTS (TFS en Ligne) pour tout et n'ont eu aucune de ces mêmes types de problèmes. Je suppose que c'est corrigé dans la sur-prem TFS 2017.
Comme il a été mentionné, Visual Studio lui-même (l'IDE) n'ont encore des difficultés de compréhension de sous-module des relations. - Il vraiment juste ne peut pas gérer. J'ai essayé un certain nombre de autonome Git d'Outils pour trouver la façon la plus simple de gérer un tel environnement. Tortue semble le plus facile et le plus performant de l'expérience lors de la poussée, de traction et de contrôle dans les pensions de titres contenant des submodules. J'ai l'habitude d'utiliser des commandes pour ajouter les submodules, mais je soupçonne que la Tortue d'ajouter un sous-module de fonctionnalité fonctionne bien, aussi.
Lorsque vous vous engagez code des pensions de titres à l'aide de la Tortue, il remarque lorsqu'un sous-module est sale et vous invite à vérifier-dans le sous-module avant de vérifier dans le parent de pensions de titres. C'est vraiment sympa. Tirant ou chercher de la mère repo peut être un peu déroutant, mais. Il ne fait pas de rafraîchissement de la sous-module de branche distante, il actualise uniquement à quelque niveau que ce soit est actuellement vérifié dans les principaux repo distant qui n'est pas toujours la dernière. En réalité, c'est le comportement souhaité, c'est juste pas immédiatement intuitive si vous n'êtes pas l'attendre.
OriginalL'auteur CRender