O Composer é uma ferramenta de gerenciamento de dependências para PHP. Ele permite que você especifique as versões exatas dos pacotes que seu projeto precisa. Isso é útil para garantir que seu projeto esteja sempre usando as versões estáveis mais recentes de suas dependências ou para testar novos recursos que ainda não foram lançados em uma versão estável.

Em alguns casos, convém exigir uma ramificação (branch) específica de um pacote em vez de uma versão específica. Isso pode ser útil para testar um novo recurso que ainda não foi lançado em uma versão estável ou para usar uma branch que corrige um bug que ainda não foi mesclado na branch master ou main.

Prefixo com dev-

Para fazer um require usando um nome específico de branch no Composer, você precisa usar o prefixo dev-. O Composer detectará esse prefixo e entenderá que uma branch é necessária em vez de um requisito de versão.

Por exemplo, para fazer o require da branch my-bug-fix do pacote Laravel nunomazer/laravel-samehouse, você usaria o seguinte comando:

composer nunomazer/laravel-samehouse:dev-my-bug-fix

Isso dirá ao Composer para baixar a branch my-bug-fix do pacote Laravel nunomazer/laravel-samehouse em vez da versão estável mais recente.

Usando dev- com repositórios personalizados no Composer

Se você quiser exigir uma branch específica de um fork ou repositório personalizado, poderá usar o prefixo dev- junto com os detalhes do repositório.

{
 "repositories": {
   "mazer": {
     "type": "vcs",
     "url": "[email protected]:nunomazer/laravel-samehouse.git"
   }
 },
 "require": {
   "nunomazer/laravel-samehouse": "dev-my-bug-fix"
 }
}

UnexpectedValueException

E se você receber o seguinte erro ao executar composer:

[UnexpectedValueException]
Could not parse version constraint branch_name: Invalid version string "branch_name"

Bem, isso significa que você não prestou atenção às instruções ;-) … você apenas esqueceu de prefixar o branch_name com dev-. Portanto, usar o nome completo da branch na versão com o prefixo deve corrigi-lo: dev-branch_name.

Considerações Finais

Aqui estão algumas considerações adicionais que você deve ter em mente ao fazer um require de um nome de ramificação específico no Composer:

  • O nome da branch deve ser prefixado com dev-.
  • O nome da branch deve ser um nome válido (existente) no repositório do pacote.
  • Se o repositório do pacote não tiver uma branch com o nome especificado, o Composer não conseguirá instalar o pacote.