バージョン管理システム
ソフトウェアソースコード・ドキュメント・画像・音楽など、様々な電子ファイルは段階を経て編集される。編集の過程で履歴を保存しておけば、何度も変更を加えたファイルであっても過去の状態や変更内容を確認したり変更前の状態を復元したりできる。バージョン管理システムの基本的な機能は、このファイルの変更内容・作成変更日時の履歴保管である。
また編集は複数人により同時並行でおこなわれる場合もある(例: 商業的なソフトウェア開発、オープンソースプロジェクト)。複数の人間が複数のファイルを各々編集すると、それぞれのファイルの最新の状態がどれであるか分からなくなったり、同一ファイルに対する変更が競合(コンフリクト)したりするなどの問題が生じやすい。バージョン管理システムはこのような問題を解決する仕組みを提供する。
バージョン管理システムの利用は大まかに以下の過程を経る。
(0. 初回のみ)管理対象をまとめたリポジトリの作成
編集希望バージョンのファイル取得(チェックアウト)
編集
編集内容のリポジトリ反映(コミット)
この過程を繰り返すことで編集履歴がリポジトリへ蓄積する。例えばA→B→Cとコミットした上で過去のバージョンBに戻りたくなった場合、Bのチェックアウトでそれが実現できる。このチェックアウト後に編集をおこないコミットした場合、Cが上書きされるのではなくバージョンC"が新たに生成される(B→C"という分枝:ブランチ)。このような仕組みによりバージョン管理システムはユーザーのバージョン管理を補助する役割を果たしている。