【问题标题】:Composer require branch name作曲家需要分支名称
【发布时间】:2021-09-15 14:43:24
【问题描述】:

例如我想要求:

{
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/google/google-api-php-client.git"
    }
  ],

  "require": {
    "google/apiclient": "v1-master"
  }
}

在此示例中,我尝试在分支 v1-master 上要求 google/apiclient。我得到错误:

  [UnexpectedValueException]                                                        
  Could not parse version constraint v1-master: Invalid version string "v1-master"

【问题讨论】:

    标签: google-cloud-platform composer-php


    【解决方案1】:

    您需要在所有开发分支(= 未标记)前加上 dev-

    要安装您需要的分支,请使用:

    composer require google/apiclient:dev-v1-master
    

    composer docs

    【讨论】:

    • 方便的信息。谢谢!
    • 我正在 Windows 机器上尝试,但无法找到正确的命令来运行 composer 从 git 存储库下载包。所以请你帮忙?
    • 添加'dev-'前缀仅在composer命令中。您不需要更改存储库分支名称中的任何内容
    • 有人可以解释为什么分支名称中需要“dev-”来检查未开发的分支吗?
    • 这只是作曲家约定。请参阅“如果您为不可比较的版本(例如 dev-develop)起别名,则 dev- 必须在分支名称前加上别名。您也可以为可比较的版本起别名(即以数字开头,以 .x-dev 结尾),但仅限于一个更具体的版本。例如,1.x-dev 可以别名为 1.2.x-dev。 - getcomposer.org/doc/articles/aliases.md#branch-alias
    【解决方案2】:

    这将起作用:

    {
      "repositories": [
        {
          "type": "git",
          "url": "https://github.com/google/google-api-php-client.git"
        }
      ],
    
      "require": {
        "google/apiclient": "dev-BRANCH_NAME"
      }
    }
    

    所以模式是“dev-*”,如果你的分支名称是“bug-fix”那么“dev-bug-fix”

    使用命令行:

    composer require google/apiclient:dev-BRANCH_NAME
    

    【讨论】:

    • 如果您分叉了主仓库,请不要在要求部分更改供应商名称。分叉:"url": "https://github.com/your-username/google-api-php-client.git" 但需要保持:google 供应商。
    【解决方案3】:

    我试图对包含多个软件包的不同 Google 存储库进行相同的操作,但我花了一些时间才弄明白。因此,我在下面分享我的解决方案。

    我的目标是从 master 分支中的 https://github.com/googleapis/google-cloud-php.git 提取最新的 google/cloud-compute。

    以下步骤对我有用:

    1. 克隆存储库
    git clone https://github.com/googleapis/google-cloud-php.git google-cloud-php
    
    1. 设置 composer.json 以使用本地文件夹中的正确包:
    {
        "repositories": [
            {
                "type": "path",
                "url": "/Users/USERNAME/projects/google-cloud-php/Compute"
            }
        ],
    
        "require": {
            "google/cloud-compute": "dev-master"
        }
    }
    
    

    请注意,在第 2 步中,url 指向实际 google/cloud-compute 包所在的 Compute 子文件夹。

    我的解决方案可以很容易地针对任何分支进行调整,您只需在步骤 1 中 git checkout 相应的分支,然后在步骤 2 中将“dev-master”更改为“dev-YOUR_BRANCH”。

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 2012-05-01
      • 1970-01-01
      • 2015-07-11
      • 2018-05-31
      • 1970-01-01
      • 2013-04-26
      • 2014-05-15
      • 1970-01-01
      相关资源
      最近更新 更多