Php 如何使composer动态加载分支?
我正在使用composer组织我的供应商库。其中一个库是通用系统类的私有存储库 问题是,我希望在dev环境中的dev分支上运行代码,并自动使用composer库的dev分支。当代码处于暂存状态时,我希望使用暂存分支,并让composer开关使用composer库的暂存分支。生产也一样 composer是否可以在不必手动切换到该分支或编辑composer.json文件的情况下提取正确的分支 编辑:有用答案是接受答案的评论 分支别名对于主开发行的别名非常有用。但是为了使用它们,您需要控制源存储库,并且需要将更改提交到版本控制 当您只想尝试某个库的错误修复(该库是本地项目的依赖项)时,这并不是很有趣 因此,您可以在Php 如何使composer动态加载分支?,php,composer-php,Php,Composer Php,我正在使用composer组织我的供应商库。其中一个库是通用系统类的私有存储库 问题是,我希望在dev环境中的dev分支上运行代码,并自动使用composer库的dev分支。当代码处于暂存状态时,我希望使用暂存分支,并让composer开关使用composer库的暂存分支。生产也一样 composer是否可以在不必手动切换到该分支或编辑composer.json文件的情况下提取正确的分支 编辑:有用答案是接受答案的评论 分支别名对于主开发行的别名非常有用。但是为了使用它们,您需要控制源存储库,并
require
和require dev
字段中为包添加别名。假设您在monolog/monolog
包中发现了一个bug。您在GitHub上克隆了Monolog,并在名为bugfix
的分支中修复了该问题。现在,您希望在本地项目中安装该版本的monolog
您使用的是symfony/monolog bundle
,它需要monolog/monolog
version1.*
。因此,您需要您的dev错误修复
来匹配该约束
只需将其添加到项目的根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"
}
}
分支别名对于主开发行的别名非常有用。但是为了使用它们,您需要控制源存储库,并且需要将更改提交到版本控制
当您只想尝试某个库的错误修复(该库是本地项目的依赖项)时,这并不是很有趣
因此,您可以在require
和require dev
字段中为包添加别名。假设您在monolog/monolog
包中发现了一个bug。您在GitHub上克隆了Monolog,并在名为bugfix
的分支中修复了该问题。现在,您希望在本地项目中安装该版本的monolog
您使用的是symfony/monolog bundle
,它需要monolog/monolog
version1.*
。因此,您需要您的dev错误修复
来匹配该约束
只需将其添加到项目的根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"
}
}
Composer的设计不是为了动态包含代码。事实上,它的设计目的是故意不自行更改代码,而只是与开发人员交互(即显式更新) 因此,如果您设法在您的开发分支中需要一个版本,然后将其合并到登台,那么如果您将
composer.lock
原封不动地移动,它将获取与您的开发分支情况完全相同的版本-现在处于登台状态。这实际上是一件好事,因为您确实希望测试真正的软件,而用于开发的软件是应该进入阶段然后进入生产的软件-没有其他动态绑定的软件
我在使用旧的遗留模块时遇到了完全相同的问题。它确实包含配置数据,这些数据应该以不同于开发人员、登台人员和生产人员的方式发布,但我不能为此使用Composer
如果您能更详细地描述一下您的用例,可能会有一个解决方案。但我几乎不相信它会包含Composer。Composer的设计不是为了动态包含代码。事实上,它的设计目的是故意不自行更改代码,而只是与开发人员交互(即显式更新) 因此,如果您设法在您的开发分支中需要一个版本,然后将其合并到登台,那么如果您将
composer.lock
原封不动地移动,它将获取与您的开发分支情况完全相同的版本-现在处于登台状态。这实际上是一件好事,因为您确实希望测试真正的软件,而用于开发的软件是应该进入阶段然后进入生产的软件-没有其他动态绑定的软件
我在使用旧的遗留模块时遇到了完全相同的问题。它确实包含配置数据,这些数据应该以不同于开发人员、登台人员和生产人员的方式发布,但我不能为此使用Composer
如果您能更详细地描述一下您的用例,可能会有一个解决方案。但我几乎不相信它会包含Composer。Composer.lock文件将准确记录使用的提交id,并还原此版本,而不还原其他内容。除非您手动强制更新,或者由于删除/不提交锁文件而在每次安装时间接强制更新,否则这不会动态捕获最新的提交。
composer.lock
文件将准确记录使用的提交id,并还原此版本,而不会还原其他内容。除非手动强制更新,或者由于删除/不提交锁文件而在每次安装时间接强制更新,否则这将不会动态捕获最新的提交。此问题与在每个环境上具有不同的配置无关。我的代码已经解决了这个问题。这是关于在每个环境中有不同版本的代码。我们通常有几个环境,在这些环境中,我们的移动应用程序可以构建新功能。当这些工作完成后,我们将合并到staging分支中并最终生存。由于composer库经常有相关的更改,因此我们需要保持分支不变。这并不理想,我也不一定同意这个过程,但事实就是如此。有一个神奇的值允许在两个库之间保持同步:self.version
。我见过它被用来同步Zend Framework 2的所有单个模块。新版本发布后,每个库都会获得ta