ホームページ  >  記事  >  開発ツール  >  Composer によってダウンロードされたコンテンツは git に送信する必要がありますか?

Composer によってダウンロードされたコンテンツは git に送信する必要がありますか?

藏色散人
藏色散人転載
2021-06-08 15:46:563240ブラウズ

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 ディレクトリを無視し、次のディレクトリのみを送信します。ベンダーの実践規範。

信じてください、ベンダー内の実際のコードと、vendor/**/.git にある git ライブラリ自体の管理ファイルは、間違いなく氷山の水上部分と水中部分に関連しています。無視すれば人が死ぬ、と言っても過言ではありません。


ブランチ開発中に、リポジトリを介してベンダーを同期せず、composer.lock のみを同期しても、時間の無駄にはならないことにも注意してください。

2 つのブランチ間を切り替える場合、それは 2 つの特定のバージョン間を行き来することに他なりません。 Composer 自体は、ダウンロードされたすべてのライブラリをキャッシュします。各ブランチをプルした後の Composer のインストールは、ダウンロード時間を繰り返し消費することなく、確実にすべてのキャッシュにヒットします。

以上がComposer によってダウンロードされたコンテンツは git に送信する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。