アーティファクトリポジトリとしてのSubversionと特定のアーティファクト管理ツールの使用


19

TL; DR:Subversionではなく、Apache ArchivaSonatype Nexusなどをアーティファクトリポジトリとして使用する理由は何ですか?

現在使用しているビルドシステムには、ビルドへの入力と出力の両方として、多くのバイナリブロブ(イメージ、サウンドファイル、コンパイル済みバイナリなど)があります。これらを管理するシステムは非常にアドホックです。コードとともにSubversionリポジトリにチェックインされるものもあれば、正式なバージョン管理外の別の場所に保存されるものもあります。

私はこれを統合しようとしているので、より一貫性があり使いやすいものがあり、コードからバイナリアーティファクトを分離します。

Googleは、利用可能なアーティファクトリポジトリ(ArchivaNexusArtifactory、…)の選択があると言っていますが、読み返してみると、これらをSubversionよりも使用する利点はありません。それは私たちのためにバイナリの世話をします-それはすでにいくつかのバイナリのためにそれを行います、私たちはそれらをコードから分離するためにリポジトリレイアウトを再配置したいだけです-そして、すでにSubversionサーバーと専門知識を持っているという顕著な利点があります。

そう。Subversionのような一般的なバージョン管理ツールを使用するよりも、専用のアーティファクト管理システムを使用する利点は何ですか?


専用ツールを使用する最大の利点は、他のツールがそれらの処理方法を知っていることです!これらのツールにアーティファクトを配置し、自動化された方法でそれらを取り出すことができます。
ヨアヒムザウアー

回答:


13

簡単な答え:一般に、バイナリアーティファクトの履歴とそれらのアーティファクトの変更は必要ありません。特定のバージョンが必要なだけです。

長い答え:バイナリファイルに小さな変更をコミットするたびに、バージョン管理システムにはデルタ(2つのファイル間の差分)を作成する方法がないため、まったく新しいコピーが作成されます。

SVNのようなCVCSでは、リポジトリの中央コピーが1つしかないため、それほど苦痛はありません。ローカルコピーは1つのバージョンにすぎません。(それでも、リポジトリは非常に大きくなり、チェックインが遅くなる可能性があります。)しかし、後でリポジトリのすべてのコピーがすべてのファイルの完全な履歴を持つDVCSに切り替えるとどうなりますか?そこでは、変更のサイズが非常に重要になります。

そして、それは痛みの見返りにあなたに何を与えますか?提供されるのは、リポジトリの以前のバージョンに戻って、そのバージョンの正しいバイナリがあることを知ることができるということだけです。

しかし、それを行うにはリポジトリにバイナリ全体が必要ですか?または、単にテキストファイルを用意して、他のリポジトリから他の場所から取得するバージョンをビルドプロセスに伝えるだけで済みますか?

後者は、一般にアーティファクトリポジトリによって提供されるものです。

さらに、Nexusなどのよりプロフェッショナルなものの一部は、サードパーティのアーティファクトのライセンスに関する情報も提供するため、FOSSライブラリと思われる微妙な条項に違反するリスクがありません。


わかりました。現在のSubversionリポジトリをアーティファクトリポジトリとして使用することは避けてください。しかし、新しいSubversionリポジトリをセットアップしないのはなぜですか。それはすべて同じ長所と短所があるようです。アーティファクトリポジトリには、おそらく大きなバイナリデータを保存する場合と同じ問題があります。
me_and

@me_and:それができます。ただし、次に、どのリビジョンがどのバージョンのアーティファクトを提供するかを管理する必要があります。アーティファクトリポジトリがあなたのためにそれを行うのに、なぜ自分自身に余分な仕事を与えるのですか?「メモ帳を使ってコードを書くことができたのに、なぜEclipseで悩むのですか?」また、スペースを節約するために古いバージョンを完全に削除することはできません。アーティファクトリポジトリを使用できます。
pdr

1
@pdrによる回答を強調して拡張するために、svnをバイナリアーティファクトリポジトリとして使用する場合、svnはデータを削除しないように設計されているため、ストレージの問題が発生する可能性があります。私が働いたある場所では、アーティファクトのストレージにsvnを使用しました。ストアから古い未使用のアーティファクトを削除するのは難しい(不可能ではありませんが難しい)ため、ストレージの制限を定期的に超えました。ArtifactoryやNexusなどのネイティブバイナリリポジトリツールを使用すると、不要なアーティファクトを削除できます。
マシュースケルトン14年

3
修正:Subversionは内部的にバイナリデルタを使用します(そして、それらのデルタのみを知っています)。私は何年も前にMS Officeファイルを保存する実験を行いましたが、非常に効果的でした。200のPowerPointスライドを大幅に再編成しても、リポジトリのサイズは非常にゆっくりと成長しました。ただし、バイナリデルタアルゴリズムの有効性はファイルの種類によって大きく異なります。ここでは、保持ポリシーの欠如が本当の問題だと思います(フィルター処理されたダンプ/ロードで回避できるものの、独自のソリューションの作成を開始します)。
ピーターベッカー

「バージョン管理システムにはデルタを作成する方法がありません」-問題はまさにそれを行うことです-2006年以降... subversion.apache.org/docs/release-notes/1.4.html#svndiff1 en.wikipedia。 org / wiki / Xdelta
RnR

1

SVNはリリースビルドのリポジトリとして使用され、非常にうまく機能します。1つのリリースリポジトリには、さまざまなリリースビルドの30GBよりも優れており、デプロイ用にビルドを適切に引き出します。

これを行う利点のいくつかは..

  • SVNに追加されたバイナリは、平均節約スペースで60〜70%近く圧縮されます。
  • SVNはリリースのライブラリ(工房)として機能し、リポジトリは災害復旧の目的でバックアップされます。
  • httpsを介したSVNにより、DMZにリリースコードを安全に配信できます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.