Dependencia de compositor con diferencias menores en el file composer.json

Estoy creando una aplicación que funcionará en dos versiones separadas del mismo software. Estos frameworks tendrán modules completamente diferentes con una dependencia compartida de un marco de JavaScript que he creado.

Digamos

dave/version1 dave/version2 

Ambos comparten la dependencia a través de un requerimiento de

 dave/framework 

Quiero mantener este marco ( dave / framework ) en un repository que los dos modules principales pueden requerir. Sin embargo, la location en la que deben colocarse estos files de frameworks es ligeramente diferente entre los dos modules, junto con requisitos ligeramente diferentes para los files composer.json para garantizar que todo se mueva correctamente (las dos versiones de estos software implementan el compositor de forma diferente).

Con mi conocimiento limitado de compositor y Git, he formulado un par de soluciones:

  1. Cree tres repositorys, dos repositorys de contenedor con files composer.json específicos para admitir cada versión diferente del software. Con otra dependencia a un tercer repository que contiene el marco real. No estoy seguro si esto alguna vez funcionaría fuera de una teoría. También termina siendo un poco desorderado.

  2. Utilice alguna forma de labeldo inteligente y haga que la versión1 y la versión2 dependan de versiones separadas del marco que a su vez tendrían un maquillaje ligeramente diferente. El compositor tendría problemas para extraer la última versión del module, ya que estaríamos ejecutando dos bases de código ligeramente diferentes en versiones raras.

Sin embargo, ambos parecen potencialmente desorderados y la forma incorrecta de estructurar lo que estoy tratando de lograr.

¿Hay una buena manera de lograr esto? o ¿es mejor mantener dos repositorys separados para el marco?

Con una planificación correcta, su primera opción será más fácil de lo que cree.

Git tiene incorporado un sistema llamado Submodules.

Los repositorys de Version1 y Version2 includeían el repository de Frameworks dentro de ellos. Luego, cuando actualice Framework, puede get esas actualizaciones sin problemas en Version1 / 2. Usted controla cuándo y cómo hacerlo, por lo que puede asegurarse de no introducir un error en el path tampoco.

Aquí hay documentation para los submodules: https://git-scm.com/book/en/v2/Git-Tools-Submodules https://git-scm.com/docs/git-submodule