Я пытаюсь загрузить библиотеку, которую я разместил на BitBucket, используя композитор, как описано в официальной документации и здесь, но продолжайте получать следующую ошибку:
[Composer\Repository\InvalidRepositoryException]
No valid composer.json was found in any branch or tag of [repository URL], could not load a package from it.
Вот мой проект composer.json:
{
"name": "Project name",
"require": {
"my-vendor/my-package": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": [repository URL]
}
]
}
И вот композитор .json в моем удаленном репозитории (который, по-видимому, не может быть найден):
{
"name": "my-vendor/my-package",
"version": "0.3",
"autoload": {
"psr-0": {
"NS_": "src"
}
}
}
Я должен упомянуть, что оба файла composer.json находятся в корневом каталоге, как и должно быть.
Некоторые другие примечания:
Я также пробовал подход "не-композитор", в котором я указываю информацию о пакете в моем проекте composer.json и опускаю композитор .json из моего удаленного репозитория, как описано в документация. Это успешно клонирует основную ветвь, но затем приводит к следующей ошибке:
[RuntimeException]
Failed to execute git checkout "master" && git reset --hard "master"
fatal: Not a git repository (or any of the parent directories): .git
Однако пакет загружается в /vendor, как и ожидалось, поэтому я не уверен, почему он снова пытается проверить мастер.
Это не так, как я хочу решить эту проблему (поскольку я предпочел бы использовать композитор .json в удаленном репозитории), но это может помочь выявить проблему в другом месте.
Спасибо за любую помощь.
ИЗМЕНИТЬ
Мне удалось заставить его работать, ссылаясь на package.json через HTTP:
"repositories": [
{
"type": "composer",
"url": "http://localhost/packages.json"
}
]
Package.json выглядит так:
{
"packages": {
"vendor/my-package": {
"dev-master": {
"name": "vendor/my-package",
"version": "dev-master",
"source": {
"url": [repository URL],
"type": "git",
"reference": "master"
}
}
}
}
}
Это единственный способ заставить это работать? Кажется, немного переборщить, чтобы разместить мой собственный файл packages.json, если я только собираюсь использовать один или два внутренних пакета.
Несмотря на это, это дает мне ту же ошибку Git, как я упоминал ранее.
РЕДАКТИРОВАТЬ 2
Принудительная ошибка (неверная кодовая фраза SSH) дает следующее:
[RuntimeException]
Failed to execute git clone "[repository URL]" "C:\workspace\DFv3\vendor\vendor/my-package" && cd /D "C:\workspace\DFv3\vendor\vendor/my-package" && git remote add composer "[repository URL]" && git fetch composer
Итак, я ясно вижу, что он здесь делает. Однако, кажется, после этой команды он запускает его cd
в каталог .git
и пытается запустить:
git checkout "master" && git reset --hard "master"
Предположительно, чтобы избавиться от экземпляра композитора, он потянул. Однако это работает в неправильном каталоге, и я не могу понять, почему..