更新项目版本:Composer

Updating project version: Composer

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

您有 masterdevelop b运行 个,您的版本是 1.0.0。出现严重错误,您必须创建一个 hotfix-1.0.1 b运行ch(来自 master)来修复它并合并回 masterdevelop。一旦你要合并,你更新 "version":"1.0.1" inside composer.json.

现在呢?在我的例子中,我 运行 composer update 和几个更​​新的依赖项(这不是我 运行 它的原因,我只是认为每次 运行 它都是强制性的 composer.json 更改),在合并 b运行ches.

时,最终在 composer.lock 上解决了 1 小时的冲突。

在更新 "version" 之后我是否必须 运行 composer update(或任何其他作曲家命令)或者那不是必需的,我可以 git commitgit push?

更新自己的版本号时不需要运行composer update。只有 运行 当你想更新依赖时:

In order to get the latest versions of the dependencies and to update the composer.lock file, you should use the update command.

php composer.phar update

This will resolve all dependencies of the project and write the exact versions into composer.lock.

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

If you just want to update a few packages and not all, you can list them as such:

php composer.phar update vendor/package vendor/package2

You can also use wildcards to update a bunch of packages at once:

php composer.phar update vendor/*

如果您使用受支持的版本控制系统(Git、Mercurial 或 SVN),您的 composer.json 文件中不应包含 "version" 密钥。您应该使用要发布的版本创建标签。

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

此外,在此文件中手动维护正确的版本号非常麻烦,在正确的 time/commit 处递增它,然后可能再次删除它。

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

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

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