Tengo una gran base de código bajo control de código fuente (era subversión, ahora git). Para compilar el código y ejecutar las pruebas, utilizo un conjunto de bibliotecas de terceros. Estas bibliotecas se pueden dividir en pocos categoriesLAdministrar fuentes y binarios de terceros usados por código bajo el control de código fuente
- Binarios sólo
- fuentes de 3 ª parte
- fuentes de 3 ª parte + modificaciones locales
Cada biblioteca tiene su {Windows, Linux} X {depuración, release} Configuraciones X {32bit, 64bit}. Además, estas bibliotecas evolucionan con el tiempo y las diferentes versiones de mi proyecto utilizan diferentes versiones/construcciones de estas bibliotecas.
Mi pregunta es ¿cuál es la mejor manera de almacenar estos terceros?
Aquí está mi conjunto de preferencias:
- Mantener el tamaño de la fuente repositorio del proyecto pequeña
- mantenga la fuente de proyecto en sincronía con las 3 partes por lo que siempre se puede compilar y ejecutar y la versión antigua
- simple para gestionar
- Cruz plataforma
probé y el pensamiento de varias soluciones pero ninguna fue satisfactoria:
- Utilice un script versionado para buscar los archivos binarios desde un servidor ftp administrado manualmente que contiene todas las versiones de las bibliotecas. Esto funciona, pero requiere una administración cuidadosa de la estructura del directorio en el servidor. Es propenso a errores ya que alguien puede sobreescribir uno de los binarios con una nueva compilación.
- SVN Externals - En el momento SVN externos no podía hacer referencia a una etiqueta específica. Hoy estoy usando git.
- Submódulos de Git: extrae todo el repositorio externo, que puede ser enorme. Alternativamente, requiere administrar un repositorio separado para cada biblioteca. El submódulo apunta a una etiqueta específica, lo que significa que obtengo todos los elementos externos, cuando solo necesito algunos, o imito algún sistema de archivos extraño en el árbol git.
Es claro para mí que las fuentes de terceros deben almacenarse en git en una sucursal de proveedor, pero los binarios y encabezados son una historia diferente.
recomendaría contra la que caben estas dependencias en sus propios repositorios. ¿Has considerado algo así como Maven? No tengo idea qué idioma estás usando, pero creo que existe algo similar para la mayoría de las plataformas principales. – Dan
¿Está incluyendo los binarios en el repositorio fuente ocupando realmente tanto espacio? – StingyJack
Algunos de los binarios son bastante grandes. Sin embargo, el problema real es tener múltiples versiones de los binarios en el repositorio del proyecto y compartir los mismos binarios versionados entre múltiples proyectos. – Xyand