Referencias de proyectos de Git y Visual Studio


Entonces, la versión corta de mi pregunta sería:

¿Cuál es la mejor manera de manejar las referencias de proyectos en Git cuando tienes proyectos que se comparten a través de múltiples soluciones y cómo deben organizarse mis repositorios Git?

La versión larga es:

Somos un pequeño equipo de desarrollo(5 desarrolladores) y actualmente usamos TFS como nuestro servidor de control y compilación de código fuente y Visual Studio es nuestro IDE de elección. Siempre he estado interesado en probar cosas nuevas y tratar de mejorar nuestra así que decidí leer en Git para averiguar si sería un buen reemplazo para la parte de control de código fuente de TFS. Acabamos de integrar Jira en nuestro flujo de trabajo, así que decidí probar Stash como nuestro entorno Git debido a lo bien que se integra con Jira. Ahora estoy en el proceso de tratar de averiguar qué manera de organizar los repositorios de git y es por eso que estoy aquí. Ahora voy a describir cuántas de nuestras soluciones están organizadas.

Tenemos un montón de soluciones. Algunos son bibliotecas y algunos son Programas que hacen referencia a estas bibliotecas a través de Referencia de proyectos en Visual studio.

Entonces, ¿lo principal que me confunde sería cómo manejar las bibliotecas a las que se hace referencia en muchas soluciones?

¿Deberíamos empezar a versionar nuestras bibliotecas y poner cada biblioteca en un repositorio separado? Parece que de esta manera implicaría mucho mantenimiento adicional cuando una biblioteca recibe una actualización que debe implementarse y esa biblioteca está siendo utilizada por más de 20 soluciones. Me equivoco ? Una desventaja más que veo es que no habría más referencias de proyectos en Visual Studio y haría la depuración mucho más tediosa.

¿Debo simplemente hacer un gran repositorio con todas nuestras soluciones y de esa manera todas nuestras referencias están actualizadas?

También pensé que tal vez podría hacer nuestro propio repositorio nuget que tenga todas estas bibliotecas y de esa manera no sería tan complicado actualizar las bibliotecas referenciadas cuando sea necesario. Esto es sólo una idea y no tengo investigué esto correctamente, así que no estoy seguro de si esto sería de algún beneficio.

Entonces, ¿hay alguna gente por ahí que pueda darme algún consejo con respecto a esto?

Author: Daniel P., 2014-02-15

1 answers

Esta es una de esas preguntas que desafortunadamente no tiene una sola respuesta - depende.

La solución más fácil es siempre tener un único repositorio. Esto evita muchos de los problemas de administrar múltiples repositorios con diferentes versiones. Pero esto solo funciona si tienes una única versión de todo; es casi imposible tener diferentes ciclos de lanzamiento para dos productos en el mismo repositorio. Así es la locura. A medida que los repositorios crecen a cualquier tamaño tampoco realmente escala.

Como señala Till, una opción es Submódulos de Git. Esto le permitirá cargar dinámicamente el origen de un repositorio en otro en una confirmación o rama específica. Por supuesto, esto viene con un conjunto de problemas, algunos submódulos específicos so y otros son solo la naturaleza de los repositorios de enlaces.*

A algunas personas realmente les gusta el subárbol de Git , que es algo engañoso y te permite extraer e importar repetidamente el historial de una carpeta entre repositorios y viceversa.

Finalmente, puede confiar en una herramienta de administración de dependencias, dependiendo de su entorno de compilación. No se lo suficiente sobre Visual Studio para comentar. En Atlassian (actualmente) usamos Maven para resolver esto. Si estabas usando JS podría ser NPM / Bower, en Ruby es Gems. Puede ser frustrante tener que lanzar una nueva versión de la Biblioteca X solo para hacer un cambio trivial para el Programa Y, pero en su mayor parte funciona bien suficientemente.

Esto es realmente un problema continuo, y algo que sé me molesta a diario. Siento que podría haber una oportunidad para una mejor solución que combine lo mejor de los submódulos y la gestión de dependencias, pero aún no la he encontrado.

Espero que eso ayude?

* Mi mayor queja con submódulos, dejando de lado los problemas de herramientas, es que alienta a la gente a verificar las URL absolutas de otros repositorios. Esto funciona perfectamente hasta que decidas migrar tu Git servidor, o uno de los repositorios, y ahora todo está roto. Descubrí el otro día que puedes usar rutas relativas, que es limpio pero no resuelve el problema.

 17
Author: charleso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:50