目的的內容哈希
的你可以在Composer\Package\Locker::getContentHash()
看到,內容哈希考慮的composer.json
以下字段:
$relevantKeys = array(
'name',
'version',
'require',
'require-dev',
'conflict',
'replace',
'provide',
'minimum-stability',
'prefer-stable',
'repositories',
'extra',
);
的內容哈希改變的唯一原因是更改composer.json
中相應屬性的其中一個值。
Composer使用內容散列來確定composer.json
中的相關字段是否與composer.lock
同步。您可以運行
$ composer validate
找出它們是否同步。
如果composer.json
和composer.lock
不同步,會顯示一個類似的消息
是不是最新的,在composer.json的最新變化,建議鎖定文件運行composer update
。
僅供參考,請參閱https://getcomposer.org/doc/03-cli.md#validate:
您應該始終運行validate命令你提交你的composer.json
文件之前,你標記之前釋放。它會檢查你的composer.json
是否有效。
在composer.lock
解決衝突。如果你有麻煩解決composer.lock
衝突,這也許可以幫助:
1步:接受上游改變
通常情況下,你可能會試圖變基一分支在上游的變化之上。如果已經發生衝突,用你的IDE或運行
$ git checkout --theirs composer.lock
接受到composer.lock
上游的變化。由於這是一個生成的文件,你真的不想解決它中的衝突。
步驟2:重新更改應用到composer.json
和composer.lock
正如前面指出的那樣,有在composer.json
相關鍵的範圍。其中一些可以通過相應的命令進行修改,而另一些則不能。
例如,如果的變化之一是新添加或去除包,運行
$ composer require foo/bar:^1.2.3
或
$ composer remove foo/bar
應用更改。
如果變化不能通過運行的命令被應用,手動修改composer.json
,然後運行
$ composer update --lock
這將更新內容的散列。
僅供參考,請參閱https://getcomposer.org/doc/03-cli.md#update:
--lock:僅更新鎖文件哈希取消警告有關鎖定文件是過時的。
哈,很高興在這裏見到你,米哈伊爾! – localheinz