私はソース管理下にある大きなコードベースを持っています(以前はSubversionでしたが、現在はgitです)。コードをコンパイルしてテストを実行するために、サードパーティのライブラリのセットを使用します。これらのライブラリはいくつかのカテゴリに分類できますL
- バイナリのみ
- サードパーティのソース
- サードパーティのソース+ローカルの変更
各ライブラリには、{Windows、Linux} X {デバッグ、リリース} X {32ビット、64ビット}構成があります。さらに、これらのライブラリは時間とともに進化し、プロジェクトのさまざまなバージョンがこれらのライブラリのさまざまなバージョン/ビルドを使用します。
私の質問は、これらのサードパーティを保存するための最良の方法は何ですか?
これが私の好みのセットです:
- プロジェクトソースリポジトリのサイズを小さく保つ
- プロジェクトソースをサードパーティと同期させて、いつでも古いバージョンをコンパイルして実行できるようにします
- 管理が簡単
- クロスプラットフォーム
私はいくつかの解決策を試し、考えましたが、どちらも満足のいくものではありませんでした。
- バージョン管理されたスクリプトを使用して、ライブラリのすべてのバージョンを保持する手動で管理されたftpサーバーからバイナリをフェッチします。これは機能しますが、サーバー上のディレクトリ構造を注意深く管理する必要があります。誰かがバイナリの1つを新しいビルドで上書きする可能性があるため、エラーが発生しやすくなります。
- SVN外部-当時、SVN外部は特定のタグを参照できませんでした。今日はgitを使っています。
- Gitサブモジュール-巨大になる可能性のある外部リポジトリ全体をプルします。または、ライブラリごとに個別のリポジトリを管理する必要があります。サブモジュールは特定のタグを指します。これは、一部だけが必要なときにすべての外部を取得するか、gitツリーで奇妙なファイルシステムを模倣することを意味します。
サードパーティのソースをベンダーブランチのgitに保存する必要があることは明らかですが、バイナリとヘッダーは別の話です。