集中型と分散型のバージョン管理の違いとは?

スポンサーリンク
スポンサーリンク


集中型バージョン管理と分散型バージョン管理の主な違いは、集中型バージョン管理ではバージョンがリモートリポジトリに保存されるのに対し、分散型バージョン管理ではリモートリポジトリだけでなく、ローカルマシンのローカルリポジトリにもバージョンを保存できる点です。

ソフトウェア開発で行われる主要な活動の1つに、ソースコード管理(SCM)があります。

ソフトウェアの要件は常に変化しており、ソースコードを修正する必要がある

SCMでは、このようなプロジェクトの状態をバージョンとして保存する。

そのため、開発者は以前のバージョンを把握することができる。

バージョン管理システムは、ソースコードの管理を可能にし、企業レベルのソフトウェア開発において有益である

さらに、バージョン管理システムには、集中型バージョン管理システムと分散型バージョン管理システムの2種類があります。

スポンサーリンク

集中バージョン管理とは

集中型バージョン管理では、一連のローカルコンピューターと1台のサーバーがあります。

サーバーは、中央の場所として動作します。

開発者がローカルマシンでソースコードを変更すると、その変更は中央のサーバーに保存されます。

作業コピーはローカルマシンでも利用できますが、バージョンはサーバーに保存されます。

つまり、中央の拠点がバージョンを管理する。

リポジトリとは、ソースコードを保存する記憶領域のことです。

中央のサーバーのリポジトリをリモートリポジトリと呼ぶことにする。

中央の拠点(サーバー)に障害が発生した場合、開発者はバージョンにアクセスできなくなる。

さらに、ネットワーク接続の問題で、開発者は中央のリポジトリにアクセスできなくなる。

以上が、集中管理型バージョン管理システムの欠点です。

分散バージョン管理とは

分散型バージョン管理は、集中型バージョン管理の制限に対する解決策を提供します。

コンピュータのセットとサーバーがあります。

サーバーはリモートリポジトリを持っています。

同時に、各コンピューターは、独自のローカルリポジトリを持っています。

各マシンがローカルリポジトリを持つので、サーバーの故障の問題はない。

 リポジトリは複数のマシンに分散されている。

したがって、これを分散型バージョン管理システムと呼ぶ。

さらに、この設定では、各開発者が自分自身のリポジトリを取得します。

開発者は、このローカルリポジトリを変更し、それを他の開発者と共有することができます。

また、他のリポジトリからの干渉もありません。

各リポジトリは履歴を追跡し、他のリポジトリへの変更のプッシュとプルを実行し、マージをサポートします。

また、ネットワークに接続されていない場合でも、開発者は自分のローカルリポジトリにバージョンを作成することができます。

インターネットに接続できる環境であれば、リモートリポジトリに変更を反映させることができます。

集中型と分散型バージョンコントロールの違い

定義

集中型バージョン管理は、サーバーの中央リポジトリが最新のコードをクライアントマシンに提供する、最も単純なバージョン管理の形式です。

一方、分散バージョン管理は、完全なコードベース(その完全な履歴を含む)がすべての開発者のコンピュータにミラーリングされているバージョン管理の形式です。

したがって、これが集中型バージョン管理と分散型バージョン管理の主な違いです。

ローカルレポジトリー

集中型バージョン管理では、ローカル・リポジトリは存在しませんが、分散型バージョン管理ではローカル・リポジトリが存在します。

したがって、この点も集中型と分散型の重要な違いです。

速度

さらに、分散型バージョン管理は集中型バージョン管理よりも高速に動作します。

インターネット接続環境

さらに、集中型バージョン管理では常にインターネットに接続する必要がありますが、分散型バージョン管理ではインターネットに接続しなくてもローカルリポジトリで作業することができます

主な内容

また、集中型と分散型バージョンコントロールのもう一つの違いは、その焦点です。

集中型バージョン管理はファイルの同期、追跡、バックアップに焦点を当てますが、分散型バージョン管理は変更の共有に焦点を当てます。

失敗例

集中型バージョン管理では、中央のサーバーに障害が発生するとすべてのバージョンが終了するが、分散型バージョン管理では、メインサーバーに障害が発生しても開発には影響がない。

結論

集中型バージョン管理と分散型バージョン管理の大きな違いは、集中型バージョン管理ではバージョンをリモートリポジトリに保存するのに対し、分散型バージョン管理ではリモートリポジトリだけでなくローカルマシンのリポジトリにもバージョンを保存することができる点です。

つまり、集中型バージョン管理はシンプルだが、デメリットもあります。

一方、分散型バージョン管理はより柔軟性があります。

そのため、ソフトウェア開発では、Gitなどの分散型バージョン管理システムがより普及しています。

タイトルとURLをコピーしました