更新项目版本:Composer

时间:2015-06-09 15:43:34

标签: git version composer-php

使用composer时更改版本号的正确方法是什么?考虑当前情况:

您拥有masterdevelop个分支,您的版本为1.0.0。出现严重错误,您必须创建一个hotfix-1.0.1分支(来自master)以修复它并合并回masterdevelop。在您即将合并之后,您需要更新"version":"1.0.1"内的composer.json

现在怎样?在我的情况下,我运行composer update和几个更新的依赖项(这不是我运行它的原因,我只是认为每次composer.json更改时都必须运行它),最终导致1小时冲突 - 合并分支时解析composer.lock

更新composer update后我是否必须运行"version"(或任何其他作曲家命令),或者我不得不git commitgit push

2 个答案:

答案 0 :(得分:2)

更新自己的版本号时无需运行composer update。仅在您想要更新依赖项时运行它:

  

为了获取最新版本的依赖项并更新composer.lock文件,您应该使用update命令。

php composer.phar update
     

这将解决项目的所有依赖项,并将确切的版本写入composer.lock

我强烈建议明确列出您要更新的依赖项:

  

如果您只想更新一些软件包而不是所有软件包,可以按以下方式列出:

php composer.phar update vendor/package vendor/package2
     

您还可以使用通配符一次更新一堆包:

php composer.phar update vendor/*

答案 1 :(得分:2)

你不应该有#34;版本"如果您使用的是受支持的版本控制系统(Git,Mercurial或SVN),则键入您的composer.json文件。您应该使用要发布的版本创建标记。

如果添加对多次提交有效的版本号,Composer应该怎么做?哪个提交真正包含该版本?如果你可以在composer.json中检查几个具有相同版本名称的提交,""版本不清楚。

此外,在此文件中手动维护正确的版本号,在正确的时间/提交时递增它并且之后可能再次删除它是很麻烦的。

因为在vcs中标记软件版本并不意味着对任何文件进行编辑,所以自动无需运行" composer update"。

另请注意,composer update仅适用于程序包的依赖项。如果在其他地方使用它,则完全忽略锁定文件,仅使用composer.json中的版本要求。

关于composer.lock中的冲突:我不会手动解决它们。我用它拥有的任何内容删除该文件,然后运行" composer update"再一次。这将创建一个新的锁定文件,该文件尊重composer.json中的所有当前依赖项。如果允许,它可能会更新到更新的版本,但我认为这没关系。这是一个一分钟的过程 - 如果事情中断并且测试失败,那么合并可能比锁定文件中的冲突有更多问题。