我已經繼承了一個用PHP 5.3.x,Symfony2和Composer構建的用於依賴管理的項目。如何讀取或反向工程composer.lock文件?
composer.json文件中有很多這樣的代碼行:"vendorname/library" : "dev-master"
代表正在使用的庫版本。它最後一次編輯於2012年8月,並且自從composer.lock文件存在並且項目在我們的主機上的服務器上運行以後,工作得很清楚。
謝謝你對composer.lock進行了一個小小的調整,我得到了composer install
,但我現在要做的是修復運行作曲者更新時遇到的一些故障。網上有很多關於作曲家依賴地獄的帖子 - 我正在河頭的一條泄漏的小船上,那裏的頭髮把我的頭髮拉出來。
簡而言之,在composer.lock創建幾年之後,該項目與當時包含數十個供應商庫的「開發」版本一起工作,但現在我正試圖清理混亂,我想把適當的版本放入composer.json並嘗試從已知狀態更新事物。
如何發現作曲家安裝實際安裝的版本?或者composer.lock文件中的什麼鍵/值告訴你這個?
我在composer.lock文件中有大量的github提交哈希,但不清楚給定了一個隨意的提交散列什麼是最接近的標記版本將用composer.json替換相應的行。
下面是composer.json爲例行:
"doctrine/doctrine-bundle" : "dev-master",
,這裏是在composer.lock該模塊的相應節點:
{
"name": "doctrine/doctrine-bundle",
"version": "dev-master",
"target-dir": "Doctrine/Bundle/DoctrineBundle",
"source": {
"type": "git",
"url": "http://github.com/doctrine/DoctrineBundle.git",
"reference": "d3c930599723c8343472a5791b0f5909a4111a73"
},
"dist": {
"type": "zip",
"url": "https://github.com/doctrine/DoctrineBundle/zipball/d3c930599723c8343472a5791b0f5909a4111a73",
"reference": "d3c930599723c8343472a5791b0f5909a4111a73",
"shasum": ""
},
"require": {
"doctrine/dbal": ">=2.2,<2.4-dev",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "2.1.*",
"symfony/framework-bundle": "2.1.*"
},
"require-dev": {
"doctrine/orm": ">=2.2,<2.4-dev",
"symfony/validator": "2.1.*",
"symfony/yaml": "2.1.*"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle."
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-0": {
"Doctrine\\Bundle\\DoctrineBundle": ""
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "[email protected]"
},
{
"name": "Benjamin Eberlei",
"email": "[email protected]"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony DoctrineBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"DBAL",
"Database",
"ORM",
"Persistence"
],
"support": {
"source": "https://github.com/doctrine/DoctrineBundle/tree/master",
"issues": "https://github.com/doctrine/DoctrineBundle/issues"
},
"time": "2012-09-10 15:12:44"
}
我猜測作曲家安裝dist- >來自composer.lock的url或source-> url,但是我有幾十個模塊需要通過,並且想知道如何爲每個引用的庫找到最接近的(通過日期)標籤來創建一個理智的composer.json文件,以便更新我們的代碼。
要找到當前安裝的版本,您可以使用'composer show -i',從[此答案](http://stackoverflow.com/questions/15185459/how-to-get-list-of-all-installed -packages-沿與版本,在作曲家)。應該讓你開始。 – geoB 2014-12-05 00:09:02