Saya memiliki perpustakaan foo/foo-lib
yang requires
komit khusus dari GitHub:
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
dan berfungsi dengan baik:
$ 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
tetapi ketika saya membutuhkan perpustakaan itu di proyek lain:
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
itu menghasilkan kesalahan ketergantungan:
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.
Jadi pertanyaan saya adalah: bagaimana cara require
mengkomit spesifik dari GitHub dengan benar di perpustakaan saya, sehingga akan tersedia dalam paket dependen?
php
github
composer-php
Maciej Sz
sumber
sumber
Jawaban:
Anda harus secara eksplisit membutuhkan pustaka Gaufrette pada hash itu, dengan sebuah
dev
bendera, di pustaka dan aplikasi Anda. Sesuatu seperti ini seharusnya berfungsi dalam aplikasicomposer.json
:Dari dokumentasi :
Dokumentasi juga menyarankan bahwa Anda perlu menyertakan repositori untuk Gaufrette dalam
bar/bar-app
file Komposer Anda , meskipun sepertinya ini tidak diperlukan dalam kasus ini. Saya tidak yakin kenapa.sumber
"minimum-stability": "dev"
kebar/bar-app
persyaratan?dev
stabilitas, dan defaultstable
untuk yang lainnya."url": "https://github.com/KnpLabs/Gaufrette.git"
dari paket pertama dan masih berfungsi.Inilah cara Anda melakukannya di baris perintah:
Anda tidak harus menggunakan keseluruhan hash, hash sepanjang tujuh karakter sepertinya bisa melakukan trik. Seperti disebutkan di atas, proyek Anda perlu mendukung dev - yang akan dikeluhkan jika belum ditetapkan. Selain itu, gunakan
--with-dependencies
untuk mendapatkan dependensi apa pun dari yang Anda perbarui.sumber
Jika Anda membuat perubahan untuk Git Repository dengan forking, pastikan Anda menggunakan nama paket yang sebenarnya ditentukan dalam file composer.json dari paket - jadi meskipun saya mem-fork paket ke akun joshuapaling github saya sendiri, dan paket itu sekarang berada di URL https://github.com/joshuapaling/Cake-Resque.git , yang sama sekali tidak mempengaruhi nama paket, dari sudut pandang komposer.
Kesalahan bodoh - tapi saya baru mengenal komposer, dan awalnya tidak jelas! Jadi, saya harap ini membantu orang lain dengan masalah yang sama.
sumber