Composer - 请求包[0.0.9]以[0.0.5,0.0.6]存在,但这些被约束拒绝

时间:2017-08-01 10:39:21

标签: php git composer-php

今天我在composer update内发现了一个我无法形容的奇怪错误。

{
   "repositories": {
       "my-plugin": {
           "type": "vcs",
           "url": "git@mycodebase.com:mjplug/myplugin.git"
       }
    },
   "require": {
        "my-plugin/myplugin": "0.0.9",
   }    
}

当我尝试composer update时,我会得到

The requested package my-plugin/my-plugin 0.0.9 exists as my-plugin/my-plugin[0.0.6, 0.0.5] but these are rejected by your constraint.

但是在存储库中存在像0.0.7, 0.0.8, 0.0.9这样的标签。为什么他们找不到?

如果我将~0.0.1设置为版本限制,则可以使用,因为composer将安装0.0.6

任何提示?谢谢

编辑:这是我们的Bitbucket服务器实例的屏幕截图:http://imgur.com/a/m8lRT

编辑2:已解决:在最后一个版本中,我将composer.json因某种原因放到子目录中。所以这就是作曲家无法找到最新标签的问题。

3 个答案:

答案 0 :(得分:3)

Composer允许通过将分支指定为dev-来使用分支作为版本,因此dev-master与主分支相关。如果要指定特定标记,则类似于

"author/package": "dev-master#v1.1.0"

另见链接:

LINK

Reference

答案 1 :(得分:3)

Composer documentation所述,我会将您的代码更新为主分支上的v0.0.7v0.0.8v0.0.9。因此应该帮助作曲家遵循所说的:

  

Composer首先要求VCS列出所有可用标记,然后根据这些标记创建可用版本的内部列表。在上面的例子中,作曲家的内部列表包括版本1.0,1.0.1,1.0.2,1.1的beta版本,1.1的第一和第二版本候选版本,最终版本1.1等等.... (请注意,Composer会自动删除实际标记名中的' v'前缀以获取有效的最终版本号。

在您的主人,"my-plugin/myplugin": "0.0.9""my-plugin/myplugin": "0.0.*"等上的这些标签应该正常工作。

答案 2 :(得分:1)

因为Wordpress插件文件需要位于子文件夹中,所以我将所有文件(包括composer.json)放到子目录中并推送新版本。

后来我尝试在我的项目中安装新版本,并且找不到新版本。这就是问题所在。 composer.json需要在root中。 (愚蠢的我)

有用的命令: composer show myplugin/myplugin