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

时间:2014-09-30 18:14:02

标签: php laravel composer-php laravel-5

我正在使用尚未发布的Laravel 5进行实验项目。最近的提交似乎有效地破坏了事情,但不是等待事情得到解决我宁愿继续使用我知道的开发版本在监视commit log时工作。我当前的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"
  },

Per the docs Composer支持绑定到特定SHA的功能,但是当我运行composer update时,我收到了消息:

[UnexpectedValueException]                                 

Could not parse version constraint ~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c: 
Invalid version string "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c"

当然,我已经尝试了各种变体(5.0#...5#...等),但都会产生相同的错误消息。投入赞赏!

4 个答案:

答案 0 :(得分:1)

您必须使用分支别名。您应该使用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"
},

答案 1 :(得分: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

所以看来这个提交不可用,但我不是作曲家专家,所以我可能错了。

修改

我已经尝试了许多其他设置,但每次都失败或者得到另一次提交而不是你想要的设置。

答案 2 :(得分:0)

这是类似的问题,答案对我有帮助:

composer | laravel 5 - Updating dependencies but the framework itself

"require": {
"laravel/framework": "dev-master#49e3c77b518547bb661b1de4fda64a3ae0c5c505",
...
}

答案 3 :(得分:-1)

叹了口气,答案就像一道闪电击中了我。 https://github.com/laravel/laravel/commits/develop显然是laravel / laravel提交,而不是 laravel / framework提交。

即使我的荒谬疏忽得到了解决,我仍然不清楚如何暂时锁定特定版本的laravel / laravel。有一些解决方法可以确定,但如果存在这样的解决方案,我正在寻找正确的方式。

对于轮子旋转@Wouter和@Marcin感到抱歉,谢谢你的帮助。