我正在使用composer来组织我的供应商库。其中一个库是一般系统类的私有存储库。
问题是我希望我的代码在开发环境中运行时脱离dev分支,并自动使用我的编写器库的dev分支。当代码在登台时,我想使用登台分支并让作曲家切换到使用作曲家库的登台分支。同样适用于制作。
作曲家是否可以在不必手动切换到该分支或编辑composer.json文件的情况下拉出正确的分支?
编辑:有用的答案是接受答案的评论。
答案 0 :(得分:1)
Composer不是为动态包含代码而设计的。事实上,它旨在故意不改变它自己的代码,但只能与开发人员交互(即显式更新)。
因此,如果你设法在dev分支中需要一个版本,然后将其合并到staging,如果你不加改变地移动composer.lock
,它将准确地获取你的dev分支情况的版本 - 现在正在进行分段。这实际上是一件好事,因为你确实想要测试真正的软件,而用于开发的软件应该是用于升级然后再用于生产的软件 - 没有任何动态绑定的软件。
我遇到了旧版传统模块的相同问题。它确实包含配置数据,这些配置数据应该以不同方式推出到开发,登台和生产,但我不能使用Composer。
也许如果您可以更多地描述您的用例,可能会有适合您的解决方案。但我几乎不相信它会包含Composer。
答案 1 :(得分:0)
分支别名非常适合别名主要开发线。但是为了使用它们,您需要控制源存储库,并且需要提交对版本控制的更改。
当您只想尝试某个库的错误修复时,这并不是很有趣,该库是您本地项目的依赖项。
因此,您可以在require
和require-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"
}
}