tipos tag repositorio qué que existen etiquetas eliminar crear git visual-studio solution project-reference bitbucket-server

tag - Referencias de proyectos Git y Visual Studio



qué tipos de etiquetas existen en git (1)

Muy bien 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 tiene proyectos que se comparten en múltiples soluciones y cómo deben organizarse mis repositorios de 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 creación de fuentes, y Visual Studio es nuestro IDE de elección. Siempre me ha gustado probar cosas nuevas e intentar mejorar nuestro entorno de desarrollo, así que decidí leer sobre Git para averiguar si sería un buen reemplazo para la parte de control de código fuente de TFS. Simplemente integramos 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 tratando de averiguar cómo organizar los repositorios de git y por eso estoy aquí. Ahora voy a describir cuántas de nuestras soluciones están organizadas.

Tenemos un montón de soluciones. Algunas son bibliotecas y otras son programas que hacen referencia a estas bibliotecas a través de la referencia del proyecto 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?

¿Debemos comenzar a versionar nuestras bibliotecas y colocar cada biblioteca en un repositorio separado? Parece que de esta manera se requerirí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 que la depuración sería mucho más tediosa.

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

También pensé que tal vez podría crear nuestro propio repositorio nuget que tenga todas estas bibliotecas y de esa forma no sería tan complicado actualizar las bibliotecas a las que se hace referencia cuando sea necesario. Esto es solo una idea y no lo he investigado correctamente, así que no estoy seguro de si esto sería de algún beneficio.

Entonces, ¿hay personas por ahí que me puedan dar algún consejo al respecto?


Esta es una de esas preguntas que, lamentablemente, no tiene una sola respuesta, depende.

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

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

A algunas personas realmente les gusta Git Subtree , que es un tanto engañoso y te permite extraer y luego importar el historial de una carpeta a través de los repositorios, y luego de nuevo.

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

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

¿Espero que eso ayude?

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