Мы используем Composer что бы подключать общие либы к проектам. Сами либы лежат как отдельные приватные репозитории в GitLab.
Обычно подключали все вот так:
{
"require": {
"yiisoft/yii": "1.1.15",
"thc/hotels-catalog-rest-client": "dev-master"
},
"config": {
"vendor-dir": "protected/vendor"
},
"repositories": [
{
"type": "git",
"url": "http://gitlab.thcdev.ru/thc/hotels-catalog-rest-client.git"
}
]
}
Для приватных проектов которых нет в Packagist прописывал путь к репозиторию вручную.
Но теперь эта либа зависит от другой приватной либы.
{
"name": "thc/hotels-catalog-rest-client",
"description": "Hotels Catalog Api Client",
"classmap": ["/"],
"require": {
"thc/yii1-rest-client": "dev-master"
},
"repositories":[
{
"type":"git",
"url":"http://gitlab.thcdev.ru/thc/yii1-rest-client.git"
}
]
}
И композер наотрез отказывается ее видеть.
Problem 1
- thc/hotels-catalog-rest-client dev-master requires thc/yii1-rest-client dev-master -> no matching package found.
- thc/hotels-catalog-rest-client dev-master requires thc/yii1-rest-client dev-master -> no matching package found.
- Installation request for thc/hotels-catalog-rest-client dev-master -> satisfiable by thc/hotels-catalog-rest-client[dev-master].
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see for more details.
Read for further common problems.
Я предположил что это из-за того что Композер не читает секцию repositories у зависимостей (т.к. таким образом можно скомпрометировать чужой проект, подставив в своем репозитории зависимости с бэкдорами)
И перенес репозиторий из дочерней зависимости в основной файл. т.е. вот так:
{
"require": {
"yiisoft/yii": "1.1.15",
"thc/hotels-catalog-rest-client": "dev-master"
},
"config": {
"vendor-dir": "protected/vendor"
},
"repositories": [
{
"type": "git",
"url": "http://gitlab.thcdev.ru/thc/hotels-catalog-rest-client.git"
},
{
"type": "git",
"url":"http://gitlab.thcdev.ru/thc/yii1-rest-client.git"
}
]
}
но результат тот же. Композер наотрез отказывается видеть вложенную зависимость.
Кто ни будь знает как это решить?
PS
При этом если все эти зависимости перенести в основной проект, т.е. вот так:
{
"require": {
"yiisoft/yii": "1.1.15",
"thc/hotels-catalog-rest-client": "dev-master",
"thc/yii1-rest-client": "dev-master"
},
"config": {
"vendor-dir": "protected/vendor"
},
"repositories": [
{
"type": "git",
"url": "http://gitlab.thcdev.ru/thc/hotels-catalog-rest-client.git"
},
{
"type": "git",
"url":"http://gitlab.thcdev.ru/thc/yii1-rest-client.git"
}
]
}
То все работает. Но зачем нам тогда менеджер зависимостей, если все прописывать руками?