16

公式ドキュメントhereの両方で説明されているように、composer を使用して 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]
        }
    ]
}

そして、これが私のリモートリポジトリのcomposer.jsonです(明らかに見つからない):

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

composer.json ファイルは両方ともルート ディレクトリにあります。

その他の注意事項:

ドキュメントで概説されているように、「非作曲家パッケージ」アプローチも試しました。これにより、プロジェクト 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 を使用したいため)、他の場所で問題を特定するのに役立つ可能性があります。

助けてくれてありがとう。

編集

HTTP経由でpackage.jsonを参照することで、なんとか機能させることができました:

"repositories": [
    {
        "type": "composer",
        "url": "http://localhost/packages.json"
    }
]

packages.json は次のようになります。

{
    "packages": {
        "vendor/my-package": {
            "dev-master": {
                "name": "vendor/my-package",
                "version": "dev-master",
                "source": {
                    "url": [repository URL],
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    }
}

これがこれを機能させる唯一の方法ですか?社内パッケージを 1 つまたは 2 つしか使用しない場合、独自の 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

6 に答える 6

8

これが少し古いことは知っていますが、この問題に遭遇する可能性のある人にとっては、これが私にとってどのように機能するかです.

コンポーザのキャッシュをクリアします。

composer clearcache

satis ビルド スクリプトを再実行します。

于 2017-01-03T06:12:53.997 に答える
3

package.jsonHTTP経由で参照することで、なんとか機能させることができました:

"repositories": [
    {
        "type": "composer",
        "url": "http://localhost/packages.json"
    }
]

ファイルは次のようになりpackages.jsonます。

{
    "packages": {
        "vendor/my-package": {
            "dev-master": {
                "name": "vendor/my-package",
                "version": "dev-master",
                "source": {
                    "url": [repository URL],
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    }
}

また、コマンドプロンプト用に持っていた自動実行レジストリエントリが、composer の実行を妨げていたようです。

参照:プライベート git Bitbucket リポジトリを要求すると、有効な composer.json が見つかりません

于 2013-11-13T13:23:25.803 に答える