バージョン管理システム
バージョン管理システム(バージョンかんりシステム)とは、主にソフトウェアのソースコードファイルを管理することを目的とした、ファイルの版管理を行うシステムである。
概要[編集]
ソフトウェアは、規模にもよるがほとんどが多数のソースコードファイルを組み合わせて作成するので、それらのファイルの版管理を通常のファイルシステムと運用だけで行うのは、煩雑でありミスも犯しやすい。
バージョン管理システムは、ファイルまたはファイルの集合にバージョンを付けて複数のバージョンを管理することができる。バージョンにはファイルの内容とともにファイルを登録した時のファイル属性や登録者の情報などが保存され、それぞれのバージョン間で差分(diff)を見たりすることができる。システムによっては、ファイル名変更や属性変更を管理することもできる。バージョンの分岐を管理したい場合は、枝(ブランチ)を作って管理できる。枝を他の枝に「マージ」(併合)することもできる。マージする際、相反する更新があった場合には衝突(コンフリクト)が発生し、解決を手動で行わなければならない場合もある。
もちろん、ソフトウェアのソースコード以外のファイルでも、バージョン管理システムで管理することができる。文章を記録したテキストファイルをバージョン管理すれば、バージョン間の文章の差分を見ることができる。ただし、システムによっては、特性上、バイナリーファイルの扱いが不得手なものもある。
システムの種類[編集]
オープンソースでは、Linux開発で利用されているGit(ギット)が特に有名である。GitHub(ギットハブ)というホスティングサービスでも有名で、Gitは少なくとも2010年代頃のOSSではデファクトスタンダードとなっている。
他にも、Subversion(SVN)が比較的有名である。Subversionは、バイナリー形式ファイルの管理が比較的得意なこともあり、バイナリー形式の書類ファイルのバージョン管理に使われることも多い。
プロプライエタリーのものもある(他事典参照)。
バージョン管理データの持ち方によっても分類される。
バージョン管理データをサーバーなどの共有可能なデータ保管場所(リポジトリー)で一元管理するものを中央集権型、バージョン管理データを一元管理せずに[1]利用者それぞれがバージョン管理データの複製を持つものを分散型と呼ぶ。Subversionは中央集権型、Gitは分散型である。
脚注[編集]
- ↑ バージョン管理を行うだけなら共有可能なデータ保管場所は不要だが、更新情報を他の複製と交換する場合には必要。Gitの場合は、共有可能な保管場所をリモート・リポジトリー、共有されないローカルファイルシステム上のものをローカル・リポジトリーと呼ぶ。