1
0
Fork 0

Fix lock file generation with dev-master aliases to be compatible with Composer 1, fixes #9337

pull/9374/head
Jordi Boggiano 2020-10-27 20:50:26 +01:00
parent 44dc3c27aa
commit ff74d0e686
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
3 changed files with 14 additions and 5 deletions

View File

@ -19,6 +19,7 @@ use Composer\Repository\RepositoryManager;
use Composer\Util\ProcessExecutor;
use Composer\Package\Dumper\ArrayDumper;
use Composer\Package\Loader\ArrayLoader;
use Composer\Package\Version\VersionParser;
use Composer\Plugin\PluginInterface;
use Composer\Util\Git as GitUtil;
use Composer\IO\IOInterface;
@ -309,6 +310,15 @@ class Locker
*/
public function setLockData(array $packages, $devPackages, array $platformReqs, $platformDevReqs, array $aliases, $minimumStability, array $stabilityFlags, $preferStable, $preferLowest, array $platformOverrides, $write = true)
{
// keep old default branch names normalized to DEFAULT_BRANCH_ALIAS for BC as that is how Composer 1 outputs the lock file
// when loading the lock file the version is anyway ignored in Composer 2, so it has no adverse effect
$aliases = array_map(function ($alias) {
if (in_array($alias['version'], array('dev-master', 'dev-trunk', 'dev-default'), true)) {
$alias['version'] = VersionParser::DEFAULT_BRANCH_ALIAS;
}
return $alias;
}, $aliases);
$lock = array(
'_readme' => array('This file locks the dependencies of your project to a known state',
'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies',
@ -343,7 +353,6 @@ class Locker
if (!$isLocked || $lock !== $this->getLockData()) {
if ($write) {
$this->lockFile->write($lock);
// $this->lockDataCache = JsonFile::parseJson(JsonFile::encode($lock, 448 & JsonFile::JSON_PRETTY_PRINT));
$this->lockDataCache = null;
$this->virtualFileWritten = false;
} else {

View File

@ -45,7 +45,7 @@ update
"packages-dev": [],
"aliases": [{
"package": "a/aliased",
"version": "dev-master",
"version": "9999999-dev",
"alias": "1.0.0",
"alias_normalized": "1.0.0.0"
}],

View File

@ -44,7 +44,7 @@ Verify that a partial update with deps correctly keeps track of all aliases.
{
"alias": "1.1.0",
"alias_normalized": "1.1.0.0",
"version": "dev-master",
"version": "9999999-dev",
"package": "current/dep"
}
],
@ -70,13 +70,13 @@ update new/pkg --with-all-dependencies
{
"alias": "1.1.0",
"alias_normalized": "1.1.0.0",
"version": "dev-master",
"version": "9999999-dev",
"package": "current/dep"
},
{
"alias": "1.1.2",
"alias_normalized": "1.1.2.0",
"version": "dev-master",
"version": "9999999-dev",
"package": "current/dep2"
}
],