У меня есть библиотека, в foo/foo-lib
которой requires
есть конкретная фиксация из GitHub:
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
и он отлично работает:
$ 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
но когда мне нужна эта библиотека в другом проекте:
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
это дает ошибку зависимости:
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.
Итак, мой вопрос: как правильно require
выполнить конкретную фиксацию из GitHub в моей библиотеке, чтобы она была доступна в зависимых пакетах?
php
github
composer-php
Maciej Sz
источник
источник
Ответы:
Вам нужно будет явно потребовать библиотеку Gaufrette в этом хэше с
dev
флагом как в вашей библиотеке, так и в вашем приложении. В приложении должно работать примерно такcomposer.json
:Из документации :
В документации также говорится, что вам необходимо включить репозиторий для Gaufrette в ваш
bar/bar-app
файл Composer, хотя, похоже, в этом случае в этом нет необходимости. Не знаю почему.источник
"minimum-stability": "dev"
кbar/bar-app
требованиям?dev
стабильном состоянии и по умолчаниюstable
для всего остального."url": "https://github.com/KnpLabs/Gaufrette.git"
пакет из первого, и он все еще работает.Вот как вы это делаете в командной строке:
Вам не обязательно использовать весь хеш, хеш длиной в семь символов, кажется, помогает. Как упоминалось выше, ваш проект должен будет поддерживать dev - на что он будет жаловаться, если еще не установлен. Также используйте
--with-dependencies
для получения любых зависимостей того, который вы обновляете.источник
Если вы вносите изменения в репозиторий Git путем разветвления, убедитесь, что вы используете имя пакета, фактически определенное в собственном файле composer.json пакета - так что, хотя я разветвлял пакет на свою собственную учетную запись github joshuapaling, и пакет теперь находился по URL-адресу https://github.com/joshuapaling/Cake-Resque.git , который с точки зрения композиторов вообще не повлиял на имя пакета.
Глупая ошибка - но я новичок в композиторе, и сначала было непонятно! Итак, я надеюсь, что это поможет кому-то еще с той же проблемой.
источник