検索

キーワード


GitとSVN、CVS、なにが違う?バージョン管理システムの違いについて

  • 公開日:2021-02-02 15:06:36
  • 最終更新日:2021-02-09 14:21:29
GitとSVN、CVS、なにが違う?バージョン管理システムの違いについて

バージョン管理システムの違いについて|集中管理方式と分散管理方式

こんにちは。javaの開発を中心に請け負っているフォワードソフト所属のエンジニアの田口です。

バージョン管理システムには多くの種類がありますが、そのほとんどが分散管理方式か集中管理方式という管理方式の違いによって2つに大別されます。本記事では管理方式について以下のを解説します。


バージョン管理システムの管理方式の違い

・集中管理方式とは

・分散管理方式とは

各管理方式の代表的なバージョン管理システムの特徴

・CVSの特徴

・SVNの特徴

・Gitの特徴


また、本記事はバージョン管理について基本的な知識があることを前提としているため、記事中にわからないことがあれば以下の記事を参考にしてください。

開発現場で必須!バージョン管理システムとは?メリットや主要なシステムを初心者向けに優しく解説


集中管理方式とは

昔のPCは高価すぎて、1台のPCを全員で共有するような使い方が当たり前でしたので、バージョン管理もローカルで行うのが当たり前でした。しかし、PCが普及するにつれて1台のPCにデータの管理を全て任せることの危険性が主張され始めました。そうして誕生したのが集中管理方式です。

集中管理方式は、クライアントサーバー方式と呼ばれることもあり、バージョン管理を専用のサーバで一元管理する方式のことです。がこれに該当します。それまでローカルで管理していたものがサーバ上で管理するようになったおかげで、ネットワークに接続していればどの端末でもファイルを使用することができるようになりました。具体的にはサーバ上にリポジトリというファイルの変更情報の保管場所を作成し、クライアントのPCがネットワーク経由でそこに接続することでファイルが利用可能になり、ファイルの更新後はサーバにアップロードすることでバージョンが加算されていきます。

そうしたメリットの一方で、リポジトリを一か所で管理している関係上、リポジトリが所属しているネットワークに接続されていないとファイルの利用ができないため、ネットワークの状態や、セキュアな接続などに注意を払う必要があります。

集中管理方式のイメージ

集中管理方式のイメージ図


集中管理方式のバージョン管理システムとして代表的なものは以下の2つです。それぞれについてより詳しい記事は後日作成します。


CVS

集中管理方式として初めて登場したバージョン管理システムです。ブランチという派生プロジェクトを作成する機能も実装されました。非常に歴史があり、様々なOSで利用できる他、統合開発環境として人気が高いEclipseにもクライアント機能が内臓されています。

しかしファイル単位でバージョンを行うため、プロジェクト全体のバージョンがわかりづらい他、ファイル名の変更がうまくできなかったり、通信の暗号化をサポートしていない等の問題があり、近年では改良版であるSVNやGit等他のバージョン管理システムの台頭の影響で需要が少なくなっています。


SVN

CVSを参考に改良してつくられたバージョン管理システムです。ファイル単位で管理していたCVSとは異なり、プロジェクト単位でのバージョン管理が可能となったおかげで、より大規模の開発に使いやすくなりました。他にもファイル名の変更が可能になったり、SSHによる通信をサポートしていたりなど、前述したCVSの問題を解決したうえで基本的なコマンドはCVSと共通なので、CVSしか知らない人でも簡単に扱えたことから、集中管理方式バージョン管理システムの主流となりました。

しかしネットワークに接続していないとファイルの利用ができないという集中管理方式に伴う問題が現代の開発に合わず、新規プロジェクトに使用されることはあまりなくなりました。


分散管理方式

メインストリームとなるリポジトリ以外に、それぞれのユーザのPC内にリポジトリのコピーを持つ方式を分散監視方式といい、Gitがこれに当たります。サーバに接続しなくてもファイルが利用できることから、開発の自由度が上がりました。

分散管理方式では、リポジトリはローカルリポジトリとリモートリポジトリの2種類が作成されます。基本はユーザーのPC上のローカルリポジトリで作業を行い、作業がある程度進んだ段階でネットワーク上のリモートリポジトリへ反映(コミット)することでチーム全体でのリポジトリ共有を行います。複数の場所でファイルを管理しているため、万が一サーバ上や他の端末のリポジトリが壊れてしまってもコピーすることで復旧もできます。

分散監視方式のイメージ

分散管理方式のイメージ図


便利な一方で、各人が所有しているリポジトリの管理を間違えると重大な機密が外部に漏れてしまう危険性もあるため、分散監視方式を採用する際には使用者の情報リテラシーが大切です。


Git

GitはLinuxの開発をチームで進めていく中で生まれました。Linuxの開発はチームがそれぞれ離れた環境で作業していたため、従来の集中管理方式のバージョン管理システムは勝手の悪いものでした。そのため開発者が、離れた位置でもバージョン管理できるようなシステムを自分たちでつくってしまえといって作成されたものGitです。現在ではその便利さや、GithubGitLabなどGitによるバージョン管理・プロジェクト管理をサポートしてくれるツールも登場したことで多くの開発現場で使われています。


Gitについての概要は下記の記事で解説しています。

【初心者向け】バージョン管理システムの定番!絶対知っておきたいGitの特徴について解説


【著者】

田口

元建築・リフォーム営業のエンジニア。現在はDXの需要に合わせてネットワークやクラウド、セキュリティといったインフラ方面の勉強中。