Частные пакеты для композиторов - действительный файл composer.json не найден

Я пытаюсь загрузить библиотеку, размещенную на BitBucket, с помощью composer, как описано вофициальная документация а такжеВот, но продолжайте получать следующую ошибку:

[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]
        }
    ]
}

А вот composer.json в моем удаленном репозитории (который, очевидно, не может быть найден):

{
    "name": "my-vendor/my-package",
    "version": "0.3",
    "autoload": {
        "psr-0": {
            "NS_": "src"
        }
    }
}

Я должен отметить, что оба файла composer.json находятся в корневом каталоге, как и должно быть.

Некоторые другие вещи, чтобы отметить:

Я также попробовал подход «не-composer package», при котором я указываю информацию о пакете в моем проекте composer.json и опускаю composer.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, как и ожидалось, поэтому я не уверен, почему он пытается снова извлечь master.

Это не тот способ, которым я хотел бы решить эту проблему (так как я бы лучше использовал composer.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"

Предположительно, чтобы избавиться от экземпляра композитора он потянул. Тем не менее, он работает в неправильном каталоге, и я не могу понять, почему ..

Ответы на вопрос(4)

Ваш ответ на вопрос