¿Cómo mantengo múltiples versiones de una biblioteca de terceros en GIT?

Mi equipo está trabajando en un proyecto de Unity con un gran SDK de terceros. Hay un nuevo SDK de vista previa que nos permite apuntar a un nuevo dispositivo al que solo dos de nosotros tenemos acceso. Creé una nueva twig 'new_sdk' e integé ese SDK allí y lo conseguí trabajando con el nuevo dispositivo.

Ahora avanzando, quiero mantener la twig original con el SDK anterior y la twig new_sdk para el nuevo SDK, pero de lo contrario fusionaré los cambios fuera del SDK entre las twigs. Otros desarrolladores en el equipo solo tienen acceso al dispositivo anterior, así que realmente tenemos que hacer esto.

Una solución es excluir las carpetas de la biblioteca del control de origen a través de .gitignore y luego copyrlas manualmente cuando desee cambiar de twig. Pero eso no es bueno.

Empecé a search en .gitattributes y fusionar controlleres de este artículo: https://medium.com/@porteneuve/how-to-make-git-preserve-specific-files-while-merging-18c92343826b#.m58m7t1qp Pero parece complicado y no pude hacer que funcionara cuando seguí los pasos del artículo en un repository de testings.

¿Hay alguna manera de hacer que los controlleres de fusión funcionen y hagan lo que quiero?

¿Hay un mejor enfoque?

Debes hacer que tu carpeta SDK sea un submodule del repository principal del proyecto.

Básicamente, creas un nuevo repository y allí insertas tu SDK, solo la carpeta, sin carpetas de proyectos.

Luego ingresas a tu proyecto principal en el nivel de Git y usas los commands del submodule:

https://git-scm.com/book/en/v2/Git-Tools-Submodules

en ese punto, agregará el SDK pero el proyecto principal no lo rastreará. Al presionar en el repository principal del proyecto, el SDK se mostrará como una carpeta gris y básicamente será un puntero al otro repository.

Ahora puede impulsar su proyecto principal y su SDK de forma independiente.

Los submodules de Git son una de las opciones para lograr lo que estás buscando. He escrito un extenso documento y un proyecto de ejemplo en github en https://github.com/abdes/submodule-docker-dev-workflow que pueden ayudarlo a comenzar y también comprender los escenarios comunes relacionados con los submodules de git en el flujo de trabajo de desarrollo. .

Lo mejor de los submodules es que el contenedor repo y el repository de submodules son completamente independientes. Puede bifurcar libremente su proyecto de contenedor sin tener que ramificar los submodules.