1
0
Fork 0

Merge pull request #4428 from webfactory/update-source-type-and-ref

Update source type and reference along with URLs
pull/4060/merge
Jordi Boggiano 2015-09-18 15:02:05 +01:00
commit 5736a59fe3
2 changed files with 66 additions and 1 deletions

View File

@ -1023,7 +1023,15 @@ class Installer
$newPackage = $pool->literalToPackage($matches[0]);
// update the dist and source URLs
$package->setSourceUrl($newPackage->getSourceUrl());
$sourceUrl = $package->getSourceUrl();
$newSourceUrl = $newPackage->getSourceUrl();
if ($sourceUrl !== $newSourceUrl) {
$package->setSourceType($newPackage->getSourceType());
$package->setSourceUrl($newSourceUrl);
$package->setSourceReference($newPackage->getSourceReference());
}
// 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
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--