現在、Source Safe を使用しており、Subversion への移行を開始しています。すべての外部 SDK (> 500 MB) は現在 Source Safe に保持されており、それらを VSS から何らかのリポジトリに移動する方法を探しています。
C++ (ほとんど)、C# (多数)、Java (少数) のプロジェクトがあります。何百ものプロジェクト。Windows プラットフォームのみ。
私はいくつかの依存関係マネージャーをいくつか持っていますが、満足していません:
- NuGet - .Net には適していますが、C++ には問題があります
- Ivy - 詳細はわかりませんが、C++ では受け入れられないようです
最初の質問: 他に何を確認できますか? エンド開発者が簡単に使用できるようにする必要があります。最良のケース - IDE 内での単純なビルド。
現在、私は次の解決策に傾倒しています:
S: などのほとんど使用されないドライブを割り当て、'DEV HOME' として宣言します。
次に、外部をここに配置します。
S:\SDK\boost\1.30\...
S:\SDK\boost\1.45\...
S:\SDK\oracle\agile_9.0.0.0\...
S:\SDK\IBM\lotus_8.0\...
S:\SDK\IBM\lotus_9.0\...
S:\Tools\NuGet\nuget.exe
S:\Tools\clr\gacutil.exe
Autobuild マシンは、この「DEV HOME」のマスターコピーを保持します。すべての開発者は、必要な SDK を autobuild マシンからローカルにコピーし、substでディスクを作成する必要があります。
このソリューションには大きな問題が見つかりません:
- 枝。異なるブランチのプロジェクトには、異なるバージョンの SDK への参照を含めることができます (boost など)。
- 外部コンポーネントのバージョンはあまり頻繁に変更されないため、ここでは何百ものブースト バージョンはありません。
- 開発者が簡単にセットアップできます。
- あらゆるツールでサポートされる絶対パス。
- ソースにそれほど大きくない SSD ドライブを使用する場合、ディスク容量に問題はありません。(現在、シンボリック リンクを使用して、外部ファイルを別のドライブに移動しています。しかし、他の開発者にとっては、これはブラック マジックのように見えます)
マイナーな問題:
- 個人的には、それは美しい解決策ではありません。
- ディスク (S:) はビジー状態になる可能性があります
- Linux ではそのままでは使えません (ただし、現時点では関心がありません)。
2 番目の質問: このソリューションのどの問題が考えられますか?
更新 1 : 相対パスではない理由。
- 外部はソースルートと同じディレクトリにある必要がありますか? :
:
externals/...
branch-root-1.0/project_collection_1/project1/...
branch-root-2.0/project_collection_2/...
ここでは、すべてのプロジェクトを 1 つの場所に配置するか、外部を複製する必要があります。絶対パスを使用したソリューションと大差ないようです。
- 外部はソースルートと同じフォルダーにある必要がありますか? :
:
branch-root-1.0/externals/...
branch-root-1.0/project_collection_1/project1/...
branch-root-1.0/project_collection_2/...
branch-root-2.0/externals/...
次に、チェックアウトされた各ブランチで外部が複製されます。ブランチのチェックアウトごとにこの +500MB + それらをセットアップするためのいくつかの追加作業。
まあ、これは受け入れられるように見えますが、絶対パスよりも優れているとは思いません。本当は絶対パスも苦手なので、相対パスのメリットを知りたいです。