バージョン管理システム
読み:バージョンかんりしすてむ
プログラム
はじめ
コンピューター
で作成された
ファイル
の履歴管理をするためのシステム。プログラム開発で使われることが多い。
目次
概要
特徴
利点
分散型と集中型
製品
状況
Linux
FreeBSD
Emacs
概要
多人数でのプログラム開発を例とする。
各開発者は、手元に
ソースファイル
を持っている。これを更新した後、開発に参加しているメンバーの手元に配る必要がある。FTPやメールで配る方法も無いわけではないが、効率が悪い。これはバージョン管理システムによって簡単に実現できる。
バージョン管理システムでは、
リポジトリ
(原本)と呼ばれるものが用意される。手元のファイルは
コミット
され、作業内容がリポジトリに反映される。同時に更新する人がいた場合は「衝突」が発生することもあるが、ある程度は自動的に解決してくれるシステムもある。これを参加メンバーが取り寄せれば、全員の環境に、同じソースが配られることになる。
特徴
利点
バージョン管理システムには様々な利点があり、使われている。
参加者全員に同じファイルを配ることができる。
必要になれば、かつてのどのバージョンでも取り寄せることが出来る。
誰かが書いたプログラムを他の参加者に配る必要がある場合、バージョン管理はファイル共有システムとしても機能する。
また、特に大規模なソフトウェアプロジェクトのリポジトリに対してコミットする権限を持つ人はコミッター(commiter)と呼ばれる。
分散型と集中型
バージョン管理システムは、超古典的なローカルのみで動作するものと、現在のネットワークで動作するものとがあり、更にネットワークで動作するものは集中型と分散型に分けられる。
集中型は初期からあるもので、リポジトリが一箇所に集中しているものをいう。
分散型は後から登場したもので、リポジトリが複数箇所に分散しているものをいう。
近年流行している分散型はGitやMercurialが主流であり、古くからある集中型の場合は、今もSubversionのまま、というのが現状と言える。
製品
主な、ネットワーク対応のバージョン管理システムは以下のとおり(ABC順)。
フリーソフト
Bazaar ‐ 分散型
CVS
‐ 集中型
Git
‐ 分散型。
Linuxカーネル
開発のために作られた
Mercurial ‐ 分散型。通称hg
Subversion
‐ 集中型。CVSの改良版
プロプライエタリー
Alienbrain ‐ 様々な開発環境管理を提供するシステム。
任天堂
が使用している
BitKeeper ‐ かつてLinuxカーネルの開発で使われていた
Visual SourceSafe ‐ Visual Studioと組み合わせて使うMicrosoftの製品
状況
Linux
Linux
は現在、
Git
を用いている。
Linuxカーネル
を用いている
Android
なども同様である。
Gitは、Linuxで使うために作られた、分散型のバージョン管理システムである。
FreeBSD
FreeBSD
は、以前は
CVS
、現在は
Subversion
を用いている。
CVSからの移行にあたり、一時は分散型のMercurialが検討されたが、結果としてはSubversionへと移行することになった。なお、一応Gitでもアクセスできるようにはなっている。
MercurialやGitが採用されたなかった理由は不明。なお、CVSはGPLだが、現行のSubversionはBSDライセンス相当のApache Licenseであるので、ここから再びGPLのMercurialやGitに戻るとは考えにくい。将来的に分散型に移行することがあるとするならば、車輪の再発明になるがMercurialやGit相当以上のものをBSDライセンス相当で新たに開発して使うことになる可能性もある。
Emacs
Emacs
は、既に終わっていると評判のBazaarを用いていた。
2014(平成26)年11月、これも遂にGitへの移行が実施された。
再検索