我正在创建一个可以在同一软件的两个不同版本上运行的应用程序。这些框架将具有完全不同的模块,并且与我构建的JavaScript框架具有共享依赖性。
让我们说
dave/version1
dave/version2
通过
的要求共享依赖关系dave/framework
我想在两个父模块都需要的存储库中维护这个框架( dave / framework )。但是,这两个模块之间需要放置这些框架文件的位置略有不同,同时对composer.json文件的要求略有不同,以确保所有内容都能正确移动(这两个版本的软件实现了编辑器的不同)。
由于我对作曲家和Git的了解有限,我已经制定了几个解决方案:
创建三个存储库,两个包含特定composer.json文件的包装存储库,以支持每个不同版本的软件。另一个依赖于包含实际框架的第三个存储库。我不确定这是否会在理论之外发挥作用。最后也有点乱。
使用某种形式的聪明标记,并且版本1和版本2依赖于框架的不同版本,而这些版本的构成略有不同。然后,当我们在奇怪的版本中运行两个如此略微不同的代码库时,Composer会努力拉动最新版本的模块。
然而,这些似乎都是混乱的,而且构建我想要达到的目标的方式也不正确。
有没有很好的方法来实现这一目标?或者我最好为框架维护两个单独的存储库?
答案 0 :(得分:1)
通过一些正确的计划,您的第一个选择将比您想象的更容易。
Git有一个名为Submodules的系统。
Version1和Version2 repos将在其中包含Frameworks repo。然后,当您更新Framework时,您可以在Version1 / 2中提取这些更新没有问题。您可以控制何时以及如何操作,这样您就可以确保不会在路上引入错误。
以下是子模块的一些文档:https://git-scm.com/book/en/v2/Git-Tools-Submodules https://git-scm.com/docs/git-submodule