将composer.json绑定到特定的Laravel 5 SHA



我正在使用尚未发布的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的车轮打滑了,谢谢你的帮助。

相关内容

  • 没有找到相关文章

最新更新