J'ai une bibliothèque foo/foo-lib
qui requires
engage un particulier de GitHub:
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
et ça marche bien:
$ 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
mais quand j'ai besoin de cette bibliothèque dans un autre projet:
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
cela produit une erreur de dépendance:
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.
Ma question est donc: comment correctement require
le commit spécifique de GitHub dans ma bibliothèque, afin qu'il soit disponible dans les packages dépendants?
php
github
composer-php
Maciej Sz
la source
la source
Réponses:
Vous devrez explicitement exiger la bibliothèque Gaufrette à ce hachage, avec un
dev
indicateur, à la fois dans votre bibliothèque et votre application. Quelque chose comme ça devrait fonctionner dans l'applicationcomposer.json
:De la documentation :
La documentation suggère également que vous devrez inclure le référentiel de Gaufrette dans votre
bar/bar-app
fichier Composer, même si cela semble ne pas être nécessaire dans ce cas. Je ne sais pas pourquoi.la source
"minimum-stability": "dev"
auxbar/bar-app
exigences?dev
stabilité, et par défautstable
pour tout le reste."url": "https://github.com/KnpLabs/Gaufrette.git"
premier package et cela fonctionne toujours.Voici comment procéder sur la ligne de commande:
Vous n'êtes pas obligé d'utiliser tout le hachage, un hachage de sept caractères semble faire l'affaire. Comme mentionné ci-dessus, votre projet devra prendre en charge le développement - dont il se plaindra s'il n'est pas déjà défini. Utilisez également
--with-dependencies
pour obtenir les dépendances de celui que vous mettez à jour.la source
Si vous effectuez des modifications pour un dépôt Git en forçant, assurez-vous que vous utilisez le nom du package est réellement défini dans le propre fichier composer.json du package - donc même si j'avais forké le package vers mon propre compte github joshuapaling, et le paquet résidait maintenant à l'URL https://github.com/joshuapaling/Cake-Resque.git , qui n'avait pas du tout influencé le nom du paquet, du point de vue des compositeurs.
Une erreur stupide - mais je suis nouveau compositeur, et ce n'était pas clair au début! Donc, j'espère que cela aidera quelqu'un d'autre avec le même problème.
la source