2

通常はvendorフォルダーを保持し.gitignoreていましたが、運用サーバーに ssh アクセスがなく、時々実行する必要があるため、無効にする必要がありましcomposer updateた。

そのため、ベンダー フォルダー削除.gitignorecomposer updateし、ローカル コンピューターで実行し、すべてをリポジトリにプッシュし、運用FTPサーバー経由で展開するというアイデアを思いつきました。( DeployHQRepository->Production Transfer を行うために使用します。)

ただし、現在、ローカル プロジェクト フォルダーのサイズは 100MB で、Bitbucketリポジトリのサイズは 20MB しかありません。私のローカル ベンダー フォルダーは約 90 MB で、リポジトリではわずか数メガバイトです。

Bitbucketチェックすると、リポジトリでこれらの値に出くわしました:

vendor / doctrine /
    annotations
        cache → 89493d2c6e [89493d2c6e]
        collections → 3db3ab843f [3db3ab843f]
        common → c4255b9fbd [c4255b9fbd]
        dbal → 3253f7a1c1 [3253f7a1c1]
        inflector → 8b4b3ccec7 [8b4b3ccec7]
        lexer → bc0e1f0cc2 [bc0e1f0cc2]

ローカルの vendor フォルダーに、Doctrine のクラスと PHP ファイルが表示されます。

いくつかお聞きしたいことがあります。

  1. なぜこれが起こっているのですか?それらの注釈は何を意味しますか? (それらをシンボリックリンクに関連付けることはできますか? たとえば、Git はそれが Doctrine であることを認識しているため、Doctrine のリポジトリにシンボリックリンクを作成し、Doctrine のリポジトリからそれらのファイルをダウンロードしますgit pullか?)

  2. 本番環境の 90 MB のベンダー フォルダーを、git リポジトリの 5 MB のベンダー フォルダーに安全に置き換えることができますか? (本番環境で git pull を実行するか、FTP 経由でリポジトリ フォルダーを本番環境にコピーします。)

  3. ベンダーフォルダーを自分でどのように処理しますか? それを維持し.gitignore、本番環境で SSH 経由で composer update コマンドを実行するか、それらを git リポジトリにプッシュしてリポジトリを本番サーバーにプッシュしますか? また、どちらが良いですか?

ありがとうございました。

Ps。本番サーバーには git も composer もインストールされていません。

Ps。私たちのアップロード速度は非常に遅く、90MB のアップロードにはおよそ 1 時間かかります。私たちは最も速い代替手段を探しているので、これにも注意してください。

4

1 に答える 1

1
  1. 基本的には正しいです。bitbucket は、それらがベンダー フォルダー内の git リポジトリであることを認識しているため、それらをそれぞれのリポジトリにリンクするだけで複製されません。注釈を本当に理解するには、Git サブモジュールを調べます

  2. いいえ、実際のコードが含まれていないため、5MB のバージョンは非常に小さく、使用しようとすると壊れます ;)
    実行してみてgit submodule initgit submodule update膨らむのを確認してください!

  3. 実稼働サーバーで行うべきではなくcomposer update、ステージング サーバーで実行する必要があります (または、テストに ssh がない場合は、事前にローカル環境で行うこともできます [これは、実稼働環境をモックすることを意図しているため、実際にはすべきではありません] )、それが正常に機能する場合は、コードを本番サーバーにプッシュします。本番composer updateサーバーで実行することは、せいぜい危険です。

于 2013-06-27T07:58:45.347 に答える