Ich habe eine Bibliothek, foo/foo-lib
die requires
ein bestimmtes Commit von GitHub hat:
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
und es funktioniert gut:
$ 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
aber wenn ich diese Bibliothek in einem anderen Projekt benötige:
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
es ergibt einen Abhängigkeitsfehler:
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.
Meine Frage lautet also: Wie kann ich require
das spezifische Commit von GitHub in meiner Bibliothek korrekt korrigieren, damit es in abhängigen Paketen verfügbar ist?
php
github
composer-php
Maciej Sz
quelle
quelle
Antworten:
Sie müssen die Gaufrette-Bibliothek an diesem Hash mit einem
dev
Flag sowohl in Ihrer Bibliothek als auch in Ihrer Anwendung explizit anfordern . So etwas sollte in der Anwendung funktionierencomposer.json
:Aus der Dokumentation :
In der Dokumentation wird außerdem vorgeschlagen, dass Sie das Repository für Gaufrette in Ihre
bar/bar-app
Composer-Datei aufnehmen müssen, obwohl dies in diesem Fall anscheinend nicht erforderlich war. Ich bin mir nicht sicher warum.quelle
"minimum-stability": "dev"
diebar/bar-app
Anforderungen ergänzen ?dev
stabil und standardmäßigstable
für alles andere verwenden können."url": "https://github.com/KnpLabs/Gaufrette.git"
erste Paket entfernt und es funktioniert immer noch.So machen Sie es in der Kommandozeile:
Sie müssen nicht den gesamten Hash verwenden, ein sieben Zeichen langer Hash scheint den Trick zu lösen. Wie oben erwähnt, muss Ihr Projekt dev unterstützen - worüber es sich beschwert, wenn es nicht bereits festgelegt ist. Verwenden
--with-dependencies
Sie diese Option auch, um Abhängigkeiten von der zu aktualisierenden zu erhalten.quelle
Wenn Sie Änderungen für ein Git-Repository durch Forking vornehmen, stellen Sie sicher, dass Sie die Option verwenden. Der Paketname ist tatsächlich in der paketeigenen Datei composer.json definiert - obwohl ich das Paket auf mein eigenes joshuapaling-Github-Konto aufgeteilt habe, und Das Paket befand sich jetzt unter der URL https://github.com/joshuapaling/Cake-Resque.git , die den Namen des Pakets aus Komponistenperspektive überhaupt nicht beeinflusst hatte.
Ein dummer Fehler - aber ich bin neu im Komponisten und es war zunächst nicht klar! Ich hoffe also, dass dies jemand anderem mit dem gleichen Problem hilft.
quelle