我正在使用尚未发布的Laravel 5进行一个实验项目。最近的一次提交似乎有效地打破了局面,但与其等待问题得到解决,我宁愿继续使用我知道正在运行的开发版本,同时监视提交日志。我当前的composer.json
文件如下(相关片段):
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "~5.0",
"illuminate/html": "~5.0"
},
我正在努力做到这一点:
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
"illuminate/html": "~5.0"
},
根据文档,Composer支持绑定到特定SHA的能力,但当我运行composer update
时,我收到消息:
[UnexpectedValueException]
Could not parse version constraint ~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c:
Invalid version string "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c"
当然,我已经尝试了各种变体(5.0#...
、5#...
等),但它们都会产生相同的错误消息。感谢输入!
您必须使用分支别名。您应该使用5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c
作为版本:
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
"illuminate/html": "~5.0"
},
您可以尝试使用:
"laravel/framework": "5.0.x-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
而不是:
"laravel/framework": "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
并使用进行安装
composer install --prefer-source
我的composer.json
文件是:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.0.x-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
"illuminate/html": "~5.0"
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "dev"
}
但是,您需要注意的是,在安装过程中会显示以下消息:
Installing laravel/framework (dev-master cd37f40)
Cloning cd37f40bba5dced6b1c30d313df2e46c5c33a62c
cd37f40bba5dced6b1c30d313df2e46c5c33a62c is gone (history was rewritten?), recovered by checking out 5300b9eb19b5aeac8746835558419d274ee21621
所以这个提交似乎不可用,但我不是作曲家专家,所以我可能错了。
编辑
我已经尝试了几十种其他设置,但每次要么失败,要么得到另一个提交,而不是你想要的。
这是一个类似的问题,它的答案对我有帮助:
composer|laravel 5-更新依赖项,但更新框架本身
"require": {
"laravel/framework": "dev-master#49e3c77b518547bb661b1de4fda64a3ae0c5c505",
...
}
叹气,答案像闪电一样击中了我。https://github.com/laravel/laravel/commits/develop显然是laravel/laravel提交,而不是laravel/framework提交。
即使我荒谬的疏忽得到了解决,我仍然不清楚如何暂时锁定特定版本的laravel/laravel。有一些解决方案是肯定的,但如果存在这样的解决方案,我正在寻找正确的方式。
很抱歉Wouter和Marcin的车轮打滑了,谢谢你的帮助。