Eu tenho uma biblioteca foo/foo-lib
com requires
um commit específico do GitHub:
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
e funciona bem:
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Updating knplabs/gaufrette dev-master (2633721 => 2633721)
Checking out 2633721877cae79ad461f3ca06f3f77fb4fce02e
Generating autoload files
mas quando eu exigir essa biblioteca em outro projeto:
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
produz erro de dependência:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for foo/foo-lib dev-master -> satisfiable by foo/foo-lib[dev-master].
- foo/foo-lib dev-master requires knplabs/gaufrette dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e -> no matching package found.
Então minha pergunta é: como fazer corretamente require
o commit específico do GitHub na minha biblioteca, para que fique disponível em pacotes dependentes?
php
github
composer-php
Maciej Sz
fonte
fonte
Respostas:
Você terá que exigir explicitamente a biblioteca Gaufrette naquele hash, com um
dev
sinalizador, em sua biblioteca e em seu aplicativo. Algo assim deve funcionar no aplicativocomposer.json
:Da documentação :
A documentação também sugere que você precisará incluir o repositório para Gaufrette em seu
bar/bar-app
arquivo Composer, embora pareça que isso não seja necessário neste caso. Não sei por quê.fonte
"minimum-stability": "dev"
aosbar/bar-app
requisitos?dev
estabilidade e padrãostable
para todo o resto."url": "https://github.com/KnpLabs/Gaufrette.git"
do primeiro pacote e ele ainda funciona.Aqui está como você faz isso na linha de comando:
Você não precisa usar o hash inteiro, um hash de sete caracteres parece fazer o truque. Conforme mencionado acima, seu projeto precisará suportar dev - do qual reclamará se ainda não estiver definido. Além disso, use
--with-dependencies
para obter quaisquer dependências daquele que você está atualizando.fonte
Se você estiver fazendo alterações em um repositório Git bifurcando, certifique-se de usar o O nome do pacote está realmente definido no próprio arquivo composer.json do pacote - então, embora eu tenha bifurcado o pacote para minha própria conta joshuapaling github, e o pacote estava agora residindo na URL https://github.com/joshuapaling/Cake-Resque.git , que não tinha influenciado o nome do pacote, da perspectiva do compositor.
Um erro estúpido - mas sou novo no compositor e não ficou claro no início! Portanto, espero que isso ajude alguém com o mesmo problema.
fonte