Php 为什么本地和全局安装的Composer回滚到不同的版本?

Php 为什么本地和全局安装的Composer回滚到不同的版本?,php,composer-php,Php,Composer Php,我的Windows上安装了本地(每个项目——由php composer.phar执行)和全局(由composer执行)版本。今天我更新了这两个,并注意到这个更新的奇怪结果 对于全局安装: $ composer self-update Updating to version 92faf1c7a83a73794fb914a990be435e1df373ca. Downloading: 100% Use composer self-update --rollback to return to

我的Windows上安装了本地(每个项目——由
php composer.phar执行)和全局(由
composer
执行)版本。今天我更新了这两个,并注意到这个更新的奇怪结果

对于全局安装:

$ composer self-update
Updating to version 92faf1c7a83a73794fb914a990be435e1df373ca.
    Downloading: 100%
Use composer self-update --rollback to return to version 42bfe9c56adb555cc08e9ce
2d32f6763ff75ae5d
$ composer self-update --rollback
Rolling back to version 2015-07-12_15-39-36-42bfe9c.
本地一级:

$ php composer.phar self-update
Updating to version 92faf1c7a83a73794fb914a990be435e1df373ca.
    Downloading: 100%
Use composer self-update --rollback to return to version 943107cfe717a74aa791f57
b87fa514c88582b0d
$ php composer.phar self-update --rollback
Rolling back to version 2015-06-26_13-40-26-943107c.
这两个安装都更新为最新版本(
92faf1c7a83a73794fb914a990be435e1df373ca
),但都显示了将回滚到的不同版本号。为什么?我错过了什么

此外,事实证明,Composer的最新版本(最新快照)有一些bug。运行
composer update
php composer.phar update
会引发一系列类似的注意:

Deprecation Notice: Composer\Package\Version\VersionParser::parseLinks is deprec ated. Use \Composer\Package\Loader\ArrayLoader::parseLinks() instead in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Package/Version/VersionParser.php:226
因此,我决定回滚这两个安装。而且,正如我“承诺”的那样,这两个安装都回滚到了不同的早期版本

对于全局安装:

$ composer self-update
Updating to version 92faf1c7a83a73794fb914a990be435e1df373ca.
    Downloading: 100%
Use composer self-update --rollback to return to version 42bfe9c56adb555cc08e9ce
2d32f6763ff75ae5d
$ composer self-update --rollback
Rolling back to version 2015-07-12_15-39-36-42bfe9c.
至于本地的:

$ php composer.phar self-update
Updating to version 92faf1c7a83a73794fb914a990be435e1df373ca.
    Downloading: 100%
Use composer self-update --rollback to return to version 943107cfe717a74aa791f57
b87fa514c88582b0d
$ php composer.phar self-update --rollback
Rolling back to version 2015-06-26_13-40-26-943107c.
这样,初始问题返回。为什么我的两个安装总是更新到同一个版本(最新版本),而回滚到另一个版本?

根据和的评论,这只是Composer的本质

当使用回滚机制时,Composer会将自己回滚到安装在该特定计算机上(或在该特定位置,因为我们讨论的是Composer的本地和全局安装)的上一版本。当某些安装在较长时间内未更新时,可能会发生这样的情况,即它只是“跳过”了中间的某些版本或快照

例如,一个安装在5月份更新,然后又在6月份更新,将回滚到5月份的版本,即使在7月份之间有某些版本/快照。

您可以尝试

php composer.phar全局要求“fxp/composer资产插件:1.0.1” 或 composer global需要“fxp/composer资产插件:1.0.1”


因为你有两个不同的版本?更新获取的是最新版本(不是您拥有的第一个后续版本),当然是相同的,但回滚到以前的版本,因此不同的版本您是否在同一天完成了上一个
自我更新
?@DamienPirsy听起来是对我问题的一个很好的回答。为什么只是评论呢。还是这一功能仅限于“官方”版本?@MarkBaker不,当然不是。它们是在很长一段时间内制作的,因为我主要使用全局版本,很少使用本地版本。我假设,在同一天对两个版本进行
自我更新
,显然会导致两个安装在同一版本/快照中,对吗?两个“更新”版本将具有相同的快照;但你不会回到那个版本;您正在回滚到“以前的”版本。。。。如果每个框上的前一个版本是在不同的日期从不同的快照创建的,那么这些将是您回滚到的版本