【问题标题】:Resolving Composer merge conflicts when upgrading Symfony2 Standard Edition解决升级 Symfony2 标准版时的 Composer 合并冲突
【发布时间】:2012-11-05 15:44:41
【问题描述】:

我的项目基于我从original Symfony SE repository 克隆的 Symfony 标准版。 Symfony 当然会分发它自己的 composer.json 和 composer.lock 文件,并注明其依赖关系。

我使用master 分支进行我的项目开发,并且自从启动项目以来,我已将我自己的项目的依赖项添加到composer.json 并使用composer.lock 锁定它们。

但现在是时候更新我的项目以使用 Symfony SE 2.1.3。

我将 Symfony 标准版存储库添加为 git 远程:

git remote add symfonyse git://github.com/symfony/symfony-standard.git

我可以合并来自symfonyse 存储库 2.1 分支的最新更改,以获得最新的 2.1 开发:

git pull symfonyse 2.1

拉到那里之后当然是合并冲突,因为我已经用我自己的依赖项修改了composer.json,而composer.lock 之前被锁定到我的旧依赖项。

但是现在冲突的composer.lock 正试图将最新的 Symfony2 SE 锁定依赖项合并到我自己项目的锁定依赖项中(包括我的部门和 Symfony 2.1.0 的部门)。手动合并这将非常繁琐!

在composer.lock 中解决这些冲突的最佳方法是什么?

我是否应该通过执行git checkout -- composer.lock 来忽略composer.lock 中的合并冲突,这会在我启动合并之前将composer.lock 恢复为其内容?我想我可以为 Symfony2 SE 需要的每个依赖项运行 composer update,这些依赖项已在我刚刚合并的新 composer.json 更改中更新。

或者我应该接受与composer.lock 合并的所有更改,提交它们,然后通过运行composer update 简单地更新我的所有项目依赖项?无论如何,这实际上会生成一个全新的锁文件,其中包含 Symfony 2.1.3 和我自己的依赖项的锁。如果我还获得了最新的composer.json 更改,我只是不确定是否需要对锁定文件进行上游更新。

【问题讨论】:

    标签: git symfony composer-php


    【解决方案1】:

    我会说最好/理想的情况是,如果您有一些稳定的需求(没有充满 dev-master..),那么您只需 rm composer.lock(或 git checkout)并运行更新以确保您获取所有内容的最新依赖项。

    如果这不可行,那么您也可以从上游恢复更改,composer update <specific packages> 让它们跟上速度。然而,这容易出错且乏味,所以我认为最好的办法是确保您的项目中有足够严格的依赖项,以便您可以毫无顾忌地运行 composer update。

    【讨论】:

      猜你喜欢
      • 2012-03-01
      • 2015-10-15
      • 2018-08-29
      • 1970-01-01
      • 2017-05-10
      • 2021-10-24
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多