Exploración de un repositorio mono frente a repositorios múltiples
Un repositorio es donde se almacena el historial de trabajo, por lo general, en un subdirectorio de Git.
¿Cómo debo organizar el repositorio de código? Los equipos de desarrollo tienen como objetivo separar los problemas en su software y repositorios. A medida que pasa el tiempo, no es inusual que los repositorios de código se vuelvan desordenados con código y artefactos irrelevantes.
Cuando se trata de organizar los repositorios, hay dos filosofías principales: usar un único repositorio (monorepo) o varios repositorios.
- Los monorepo son un patrón de control de código donde todo el código fuente se guarda en un repositorio. Es fácil dar a todos los empleados acceso a todo a la vez. Se clona y ya está listo.
- La organización de los proyectos en repositorios independientes se conoce como multirepo.
La diferencia fundamental entre las filosofías monorepo y multirepo es lo que permite a los equipos trabajar juntos de forma más eficaz. En un escenario extremo, la vista de varios repositorios sugiere que cada subequipo puede funcionar en su repositorio. Les permite trabajar en sus respectivas áreas mediante las bibliotecas, las herramientas y los flujos de trabajo de desarrollo que optimizan su productividad.
El costo de consumir cualquier cosa que no se desarrolle dentro de un repositorio determinado es equivalente al uso de una biblioteca o servicio de terceros, incluso si el autor es alguien que se encuentra cerca.
Si se produce un error en la biblioteca, debe solucionarlo en el repositorio correspondiente. Una vez publicado un nuevo artefacto, puede volver al repositorio y realizar los cambios de código necesarios. Sin embargo, si el error está en otra base de código, o implica bibliotecas, herramientas o flujos de trabajo diferentes, es posible que tenga que buscar ayuda del propietario de ese sistema y esperar su respuesta.
Si usa la vista mororepo, la administración de gráficos de dependencias complejos puede aumentar la dificultad de usar un único repositorio. Las ventajas de permitir que diferentes equipos trabajen de forma independiente no son sustanciales. Algunos equipos pueden encontrar una manera eficaz de trabajar, pero esto puede no ser cierto para todos los grupos. Además, otros equipos pueden elegir un enfoque poco óptimo al no querer aceptar los beneficios obtenidos por otros. Consolidar todo el trabajo en un solo repositorio le permite centrarse en supervisar estrechamente ese único repositorio.
Con un único repositorio en el que cualquier persona puede cambiar cualquier cosa, se evita la molestia de tener que realizar cambios en otros repositorios o esperar a que los equipos realicen cambios por usted.
Si detecta un error en una biblioteca, corregirlo es tan fácil como encontrar un error en su propio código.
Nota:
En Azure DevOps, es habitual usar un repositorio independiente para cada solución asociada dentro de un proyecto.