composer の次のチュートリアル コラムでは、composer によってダウンロードされたコンテンツを git に送信する必要があるかどうかについて説明します。それが必要!
具体的な質問:
Composer を使用している学生の皆さんに聞きたいのですが、Composer を通じてダウンロードしたファイルの内容を Git に送信しますか?
公式 FAQ で「ベンダー ディレクトリの依存関係をコミットする必要がありますか?」という記事を見たことがありますが、Git に送信しない方がよいという意見もあったのですが、ブランチ切り替え時の再コンポーザのインストールの問題はどのように対処すればよいでしょうか?ベンダーがリポジトリに送信された場合、パッケージ内の .git フォルダーはどのように処理されるべきですか?
実際には、ブランチ開発であっても本番環境へのデプロイであっても、環境 では、composer.json でバージョン番号のワイルドカード ルールをどのように記述するかに関係なく、私たちが最も懸念しているのは常に最も基本的な内容です。開発時には、すべての依存ライブラリの具体的なバージョン番号は何か、ということです。使用済み?
このコンテンツは、composer.lock ファイルによってサポートされています。ロック ファイルを維持することにより、依存ライブラリに変更が加えられた後、コンポーザー自体がプロジェクト内のすべての依存ライブラリの特定のバージョンを記録します。このファイルに関するドキュメント (https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file) をお読みください。
必ず、composer.lock ファイルをリポジトリに送信し、ブランチの切り替えまたはデプロイ後に、composer install を使用して、ロック ファイルで指定されている特定の依存関係バージョンをインストールする必要があります。
この意味では、ベンダー ディレクトリをメイン リポジトリに送信するかどうかは正しいです。提出するかどうかはトレードオフの選択です:
提出した場合:
利点: 「プルして使用する」利便性。
欠点: 情報が重複します。当時開発した特定のバージョンのため、ロック ファイルが記録されています。つまり、vendorフォルダも同じものを表現しています。
欠点: 不整合が生じるリスク。 Composer はロック ファイルがベンダー ディレクトリと一致していることを保証しますが、ロック ファイルを git リポジトリに送信するのは結局のところ手動操作だからです。 2 つのうちのどちらかに遅れをとらないという保証はありません。
提出しない場合は有利不利が逆転します。二度と繰り返さないでください。
私の考えは次のとおりです。「使いやすさよりも正確さ」という考えに固執することをお勧めします。私の提案は、ベンダーに提出するのではなく、開発時に依存ライブラリのバージョンを維持するためにロック ファイルを使用することです。
送信する場合は、必ず次の 2 つのガイドラインに従ってください。
(1) 2 つのファイル Vendor と Composer.lock の送信が同期されていることを確認してください。一方が言及されている場合は、もう一方も言及する必要があります。
コミットが 1 つだけ送信された場合でも、開発は責任を負う必要があります。その理由は次のとおりです。プルした後すぐに利用できるようにするためにベンダーに送信しますが、git には部分的なチェックアウト機能があります。Composer プロジェクトの場合、私は Composer プロジェクトの規則に従う権利を持っています。ベンダー ディレクトリをチェックアウトするのではなく、実際のコードをプルダウンしてから、composer のインストールを実行します。
(これが間違っているという人がいるなら、SF と Zhihu であなたの悪徳会社とテクニカル ディレクターを毎分暴露することを私は支持します)
(2) ベンダー フォルダーの提案については必ず Composer の指示に従ってください。 (https://getcomposer.org/doc/faqs/Should-i-commit-the-dependency-in-my-vendor-directory.md)、サブライブラリのすべての .git ディレクトリを無視し、次のディレクトリのみを送信します。ベンダーの実践規範。
ブランチ開発中に、リポジトリを介してベンダーを同期せず、composer.lock のみを同期しても、時間の無駄にはならないことにも注意してください。
2 つのブランチ間を切り替える場合、それは 2 つの特定のバージョン間を行き来することに他なりません。 Composer 自体は、ダウンロードされたすべてのライブラリをキャッシュします。各ブランチをプルした後の Composer のインストールは、ダウンロード時間を繰り返し消費することなく、確実にすべてのキャッシュにヒットします。
以上がComposer によってダウンロードされたコンテンツは git に送信する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。