バージョン管理システム(VCS:Version Control System)
→ あるファイルやファイル群に対する変更を時間とともに追跡可能とするシステム。
分類として、以下の3つが存在する。
- ローカルバージョン管理システム
- 集中型バージョン管理システム
- 分散型バージョン管理システム
ローカルバージョン管理システム
ファイルなどの全てのデータが 1 台のコンピューターに保存される。
ファイルに対する変更はパッチとして保存される。
データが1台のコンピュータにのみ保存されているため、複数人での協業は難しい。
個人で開発しているとき向けのバージョン管理システムとなる。
集中型バージョン管理システム
1つのサーバにファイルを配置し、それに対して複数人で変更を行うシステム。
代表的なものにSVNがある。

集中型バージョン管理の場合、ファイル変更は以下のようなフローで行われる。
- ローカルに中央リポジトリの作業コピーを取得する(チェックアウト)
- チェックアウトした作業コピーに対して追加/編集/削除を実施
- 変更を中央リポジトリに対してコミットする
- (随時実施)最新の中央リポジトリの内容を作業コピーに反映する(プル)
コミットが中央リポジトリに対して行われるため、複数人で協業している際には、同じファイルの編集が行われていないかなど注意が必要となる。
分散型バージョン管理システム
リポジトリをサーバ上とローカルにそれぞれ配置するシステム。
ローカルリポジトリに対してまずは変更を行うことになるので、オフライン環境でも作業可能。
代表的なものにGitがある。
※Gitについてはいつか別途まとめます

分散型バージョン管理の場合、ファイル変更は以下のようなフローで行われる。
- ローカルにローカルリポジトリを作成する(クローン)
- ローカルリポジトリから作業コピーを作成する(ブランチ作成)
- 作業コピーに対して追加/編集/削除を実施
- 変更をローカルリポジトリに対してコミットする
- ローカルリポジトリの内容をサーバにアップロードする(プッシュ)
- プッシュした変更内容を中央リポジトリにマージする
- (随時実施)最新の中央リポジトリの内容をローカルリポジトリに反映する(プル)
分散柄バージョン管理システムは、集中型バージョン管理システムと比較して協業時の衝突リスクなどは低いものの、その分機構が複雑になっているため、学習コストやなにか起きた時のエラー対応の難易度は高め。
一旦今回は以上。