如何让composer动态加载分支?

时间:2013-12-11 03:04:37

标签: php composer-php

我正在使用composer来组织我的供应商库。其中一个库是一般系统类的私有存储库。

问题是我希望我的代码在开发环境中运行时脱离dev分支,并自动使用我的编写器库的dev分支。当代码在登台时,我想使用登台分支并让作曲家切换到使用作曲家库的登台分支。同样适用于制作。

作曲家是否可以在不必手动切换到该分支或编辑composer.json文件的情况下拉出正确的分支?

编辑:有用的答案是接受答案的评论。

2 个答案:

答案 0 :(得分:1)

Composer不是为动态包含代码而设计的。事实上,它旨在故意不改变它自己的代码,但只能与开发人员交互(即显式更新)。

因此,如果你设法在dev分支中需要一个版本,然后将其合并到staging,如果你不加改变地移动composer.lock,它将准确地获取你的dev分支情况的版本 - 现在正在进行分段。这实际上是一件好事,因为你确实想要测试真正的软件,而用于开发的软件应该是用于升级然后再用于生产的软件 - 没有任何动态绑定的软件。

我遇到了旧版传统模块的相同问题。它确实包含配置数据,这些配置数据应该以不同方式推出到开发,登台和生产,但我不能使用Composer。

也许如果您可以更多地描述您的用例,可能会有适合您的解决方案。但我几乎不相信它会包含Composer。

答案 1 :(得分:0)

Require inline alias

分支别名非常适合别名主要开发线。但是为了使用它们,您需要控制源存储库,并且需要提交对版本控制的更改。

当您只想尝试某个库的错误修复时,这并不是很有趣,该库是您本地项目的依赖项。

因此,您可以在requirerequire-dev字段中对包进行别名。假设您在monolog/monolog包中发现了一个错误。您在GitHub上克隆了Monolog,并将该问题修复为名为bugfix的分支。现在您要在本地项目中安装该版本的monolog。

您使用的symfony/monolog-bundle需要monolog/monolog版本1.*。因此,您需要dev-bugfix来匹配该约束。

只需将其添加到项目的根目录composer.json

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/you/monolog"
        }
    ],
    "require": {
        "symfony/monolog-bundle": "2.0",
        "monolog/monolog": "dev-bugfix as 1.0.x-dev"
    }
}
相关问题