1
0
Fork 0
pull/4428/head
Matthias Pigulla 2015-09-18 15:31:54 +02:00
parent 2db52ebeba
commit 3c08318ea0
2 changed files with 66 additions and 3 deletions

View File

@ -1023,9 +1023,15 @@ class Installer
$newPackage = $pool->literalToPackage($matches[0]); $newPackage = $pool->literalToPackage($matches[0]);
// update the dist and source URLs // update the dist and source URLs
$sourceUrl = $package->getSourceUrl();
$newSourceUrl = $newPackage->getSourceUrl();
if ($sourceUrl !== $newSourceUrl) {
$package->setSourceType($newPackage->getSourceType()); $package->setSourceType($newPackage->getSourceType());
$package->setSourceUrl($newPackage->getSourceUrl()); $package->setSourceUrl($newSourceUrl);
$package->setSourceReference($newPackage->getSourceReference()); $package->setSourceReference($newPackage->getSourceReference());
}
// only update dist url for github/bitbucket dists as they use a combination of dist url + dist reference to install // only update dist url for github/bitbucket dists as they use a combination of dist url + dist reference to install
// but for other urls this is ambiguous and could result in bad outcomes // but for other urls this is ambiguous and could result in bad outcomes
if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com)/}', $newPackage->getDistUrl())) { if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com)/}', $newPackage->getDistUrl())) {

View File

@ -0,0 +1,57 @@
--TEST--
Converting from one VCS type to another (including an URL change) should update the lock file.
--COMPOSER--
{
"repositories": [
{
"type": "package",
"package": [
{
"name": "a/a", "version": "1.0.0",
"source": { "reference": "new-git-ref", "type": "git", "url": "new-git-url" }
}
]
}
],
"require": {
"a/a": "1.0.0"
}
}
--INSTALLED--
[
{
"name": "a/a", "version": "1.0.0",
"source": { "reference": "old-hg-ref", "type": "hg", "url": "old-hg-url" }
}
]
--LOCK--
{
"packages": [
{
"name": "a/a", "version": "1.0.0",
"source": { "reference": "old-hg-ref", "type": "hg", "url": "old-hg-url" }
}
]
}
--RUN--
update
--EXPECT-LOCK--
{
"packages": [
{
"name": "a/a", "version": "1.0.0",
"source": { "reference": "new-git-ref", "type": "git", "url": "new-git-url" },
"type": "library"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}
--EXPECT--