バージョン管理システム
読み:バージョンかんりしすてむ

 プログラムはじめコンピューターで作成されたファイルの履歴管理をするためのシステム。プログラム開発で使われることが多い。
目次

概要
 多人数でのプログラム開発を例とする。
 各開発者は、手元にソースファイルを持っている。これを更新した後、開発に参加しているメンバーの手元に配る必要がある。FTPやメールで配る方法も無いわけではないが、効率が悪い。これはバージョン管理システムによって簡単に実現できる。
 バージョン管理システムでは、リポジトリ(原本)と呼ばれるものが用意される。手元のファイルはコミットされ、作業内容がリポジトリに反映される。同時に更新する人がいた場合は「衝突」が発生することもあるが、ある程度は自動的に解決してくれるシステムもある。これを参加メンバーが取り寄せれば、全員の環境に、同じソースが配られることになる。

特徴

利点
 バージョン管理システムには様々な利点があり、使われている。
 誰かが書いたプログラムを他の参加者に配る必要がある場合、バージョン管理はファイル共有システムとしても機能する。
 また、特に大規模なソフトウェアプロジェクトのリポジトリに対してコミットする権限を持つ人はコミッター(commiter)と呼ばれる。

分散型と集中型
 バージョン管理システムは、超古典的なローカルのみで動作するものと、現在のネットワークで動作するものとがあり、更にネットワークで動作するものは集中型と分散型に分けられる。
 集中型は初期からあるもので、リポジトリが一箇所に集中しているものをいう。
 分散型は後から登場したもので、リポジトリが複数箇所に分散しているものをいう。
 近年流行している分散型はGitやMercurialが主流であり、古くからある集中型の場合は、今もSubversionのまま、というのが現状と言える。

製品
 主な、ネットワーク対応のバージョン管理システムは以下のとおり(ABC順)。

状況

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への移行が実施された。

再検索