【问题标题】:How to manage library repository inside main project repository [closed]如何管理主项目存储库中的库存储库[关闭]
【发布时间】:2021-09-15 18:05:52
【问题描述】:

我在 github 上有一个主项目存储库,其中包含我的 PHP/laravel 项目的代码。为了使项目的某些部分保持独立,我们创建了一个包含库的额外存储库。

我的主项目使用这些库。文件结构如下:

/main_folder/...<code linked to main project repository>
/main_folder/vendors/libraries/...<library code linked to libraries repository>

请注意,库代码位于主项目的子文件夹中。

项目使用 composer 来管理包。 我正在使用 Visual Studio Code 进行开发。

每次运行 composer update 时,/vendors/ 中的包都会更新,包括我的库包。这种设置的问题在于,快速测试库代码更改变得很尴尬。我找到了 2 种方法来使这有点工作,但似乎都不是正确的做事方式。

选项 A)

  • 我将我的库存储库克隆到供应商目录中。对库进行本地更改后,可立即在主项目中访问。

缺点是每次在我的主项目上运行 composer update 时,我都需要删除我的库存储库。 Composer 无法处理目录中的 .git 文件。

选项 B)

  • 我将我的库存储库克隆到主项目之外的目录中。 Composer 然后运行良好,我可以正确管理我的库包。

缺点是每次我对要使用我的主代码测试的库进行更改时,我都需要运行 composer update。主项目用于调试和测试库。每次更改都需要几分钟,这使得调试非常痛苦。

问题:

  1. 可以调整选项 A 或 B 以使其顺利工作吗?
  2. 还有其他选择可以使这项工作吗?

【问题讨论】:

    标签: php git composer-php


    【解决方案1】:

    您可以将库依赖项配置为symlink to a local directory(路径存储库)。使用符号链接,您仍然可以在客户端应用程序中工作时从其 dev 文件夹开发库。

    当您的库开发完成后,您可以将其推送到您的远程存储库(或 packagegist,您需要的任何东西),标记版本并配置适当的依赖项。

    【讨论】:

      【解决方案2】:

      您可以使用franzliedke/studio 实现此目的,它会自动将您的本地包符号链接到供应商目录。

      它不需要修改您的项目composer.json,并且可以通过其studio.json 配置文件支持多个本地包。

      【讨论】:

      • 你不能通过在路径存储库的 $HOME/.config/composer 中的 composer.json 中配置 composer 来达到同样的效果吗?也不需要修改项目级别的配置,并在禁用插件和脚本时稳定构建以防止副作用。
      猜你喜欢
      • 2017-08-19
      • 2012-03-12
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      相关资源
      最近更新 更多