TL; DR:なぜ Apache Archiva または Sonatype Nexus のようなものをSubversionの代わりにアーティファクトリポジトリとして使用するのですか?
現在使用しているビルドシステムには、ビルドへの入力と出力の両方として、多数のバイナリblob(画像、サウンドファイル、コンパイル済みバイナリなど)があります。これらを管理する私たちのシステムは非常に特別です。コードと一緒にSubversionリポジトリにチェックインされるものもあれば、正式なバージョン管理以外の場所に保存されるものもあります。
私はこれを統合することを考えているので、より一貫性があり、使いやすく、バイナリアーティファクトをコードから分離するものがあります。
グーグルは、利用可能なアーティファクトリポジトリの選択があることを教えてくれます( Archiva 、 Nexus 、 Artifactory 、…)、しかし、周りから読んで、私はできます 'これらをSubversionよりも使用する利点を確認してください。それは私たちのためにバイナリの世話をします-それはすでにいくつかのバイナリのためにそれをコードから分離するためにリポジトリレイアウトを再配置したいだけです-そして私たちがすでにSubversionサーバーと専門知識を持っているという顕著な利点があります。
そう。 Subversionのような一般的なバージョン管理ツールを使用するよりも、専用のアーティファクト管理システムを使用する利点は何ですか?
短い答え:一般に、バイナリアーティファクトの履歴とそれらのアーティファクトの変更は必要ありません。特定のバージョンが必要です。
より長い答え:バイナリファイルに小さな変更をコミットするたびに、バージョン管理システムには、デルタ(2つのファイルの差分)を作成する方法がないため、まったく新しいコピーが作成されます。
SVNのようなCVCSでは、リポジトリの中央コピーが1つしかないため、それほど大きな問題ではありません。ローカルコピーは1つのバージョンのみです。 (それでも、リポジトリが非常に大きくなり、チェックインが遅くなる可能性があります。)しかし、後でDVCSに切り替えると、リポジトリのすべてのコピーにすべてのファイルの完全な履歴がある場合はどうなりますか?変更のサイズはそこで非常に重要になります。
そして、それはあなたに痛みの見返りとして何を与えますか?それが提供する唯一のものは、リポジトリの以前のバージョンに戻って、そのバージョンの正しいバイナリがあることを知ることができることです。
しかし、それを行うにはリポジトリ内のバイナリ全体が必要ですか?または、テキストファイルを用意して、ビルドプロセスに別のリポジトリから他の場所から取得するバージョンを指示するだけで済むでしょうか?
後者は、アーティファクトリポジトリによって一般的に提供されるものです。
さらに、Nexusなどのより専門的なもののいくつかは、サードパーティのアーティファクトのライセンスに関する情報も提供するので、FOSSライブラリであると信じるものの微妙な条項に抵触する危険はありません。
私たちはリリースビルドのリポジトリとしてSVNを使用しています。 1つのリリースリポジトリには、30 GBを超えるさまざまなリリースビルドがあり、デプロイのためにビルドを適切に引き出します。
これを行うことのいくつかの利点は..