Desarrollamos con Visual Studio 2010 (en C#) y migramos hace un tiempo de SVN a GIT. Ahora intentamos dividir nuestro repositorio (que es bastante grande - ~ 30.000 archivos) en muchos repositorios de git, uno para cada solución. Las soluciones comparten algunos proyectos, en su mayoría bibliotecas que desarrollamos internamente y que nos gusta agregar desde todas las soluciones.¿Cómo lidiar con los submódulos de Git en las soluciones de Visual Studio con diferente diseño?
Los nuevos repositorios tienen un diseño plano. Un subdirectorio para cada proyecto (los proyectos compartidos son submódulos). En el gran repo viejo, los proyectos están en una estructura de árbol.
El problema ocurre con referencias externas en los submódulos. En los repositorios nuevos, la ruta a un proyecto referenciado puede ser "...... libs \ someproject", mientras que en el nuevo diseño la ruta correcta sería ".. \ someproject".
Ya hemos tenido algunas guerras de edición relacionadas con esto y no estamos interesados en más.
soluciones a medias que se me ocurrieron:
uso "trayectorias de referencia" en ... csproj.user y excluir este archivo de control de versiones (tiene que ser hecho de nuevo para cada desarrollador y después de cada limpieza reopsitory)
ramas de uso para cada situación y tratar de enseñar a todos donde commit "reales" deben ir y dónde "entorno de cambio" confirmaciones deben ir (submódulos ya no son el concepto más simple ...)
binarios de inserción en lugar de los submódulos (¿pero qué hay de desarrollar cambios en los submódulos? ¿qué pasa con las diferentes versiones de log4net?)
¿Alguien sabe de una solución sensata?
Supongo que está implicando pasar de la inclusión de fuente a la inclusión de DLL con una razonable administración de dependencias. Si es así, parece tentador, pero ahora desarrollamos las bibliotecas compartidas como parte de las soluciones adjuntas. Parece una forma bastante pesada de resolver el problema. – plaugg
Si, según entiendo, son proyectos independientes de VS, no debería plantear un problema en términos de factibilidad, pero de hecho no es el truco rápido que puede estar buscando ... Si está preocupado por la depuración, entonces nuget admite vincularse a un servidor de origen de símbolos para mantener la experiencia de depuración, pero si hay muchos avances y retrocesos entre los proyectos principal y de soporte, esto podría ser un problema. Estoy un poco dubitativo w.r.t. la falta de elegancia de los submódulos de git y yo quería sugerir una alternativa que no has enumerado (¡y que admite el control de versiones!). – Dirk
Estoy un poco triste porque esta opción no estaba disponible cuando aún trabajaba con .NET como equipo. Visual Studio es notoriamente estúpido cuando se trata de dependencias. Este enfoque tiene muchas ventajas. Pero lo más importante para mí es que, desde la perspectiva de los desarrolladores, los proyectos serán más rápidos de configurar, compilar y programar. Cuando reviso un nuevo proyecto, busco todas las bibliotecas necesarias y solo tengo que compilar las bibliotecas del proyecto para ejecutarlo. No solo eso sino que se ha ido es el desorden de esos subproyectos que hacen que los proyectos sean mucho más fáciles de entender. – SpoBo