Composer requer nome de filial

106

Por exemplo, quero exigir:

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

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

Neste exemplo, eu tento require google/apiclientno branch v1-master. Eu recebo o erro:

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

Respostas:

186

Você precisa prefixar todos os branches dev (= não marcados) por dev-.

Para instalar o branch que você precisa, use:

composer require google/apiclient:dev-v1-master

Veja a documentação do compositor .

Tomáš Votruba
fonte
1
Informações úteis. Obrigado!
Matt Komarnicki
Estou tentando isso em uma máquina Windows, mas não consigo encontrar o comando correto para executar o composer para baixar um pacote do repositório git. Então você por favor me ajude nisso?
Líder da equipe de programador sênior de PHP,
Adicione o prefixo 'dev-' apenas no comando composer. Você não precisa alterar nada no nome dos ramos do repositório
Silas Ribas Martins
Não foi possível reinstalar o branch atualizado mesmo com --no-cache, então usei este:composer require google/apiclient:dev-v1-master#COMMITHASH
M Rostami
46

isso vai funcionar:

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

  "require": {
    "google/apiclient": "dev-BRANCH_NAME"
  }
}

então o padrão é "dev- *", se o nome do seu branch for "bug-fix" então "dev-bug-fix"

com linha de comando:

composer require google/apiclient:dev-BRANCH_NAME
fico7489
fonte
4
Obrigado por explicar o padrão "dev- *"
Emeka Mbah
4
Se você bifurcou o repo principal, não altere o nome do fornecedor na parte necessária. Garfo: "url": "https://github.com/your-username/google-api-php-client.git"mas requer estacas: googlevendedor.
Vladimir Vukanac de
1
@VladimirVukanac aquela pequena joia precisa de mais visibilidade!
Jacob Thomason