VSS(Microsoft Visual SourceSafe)のバージョン管理概念

https://msdn.microsoft.com/ja-jp/library/3h0544kx(v=vs.80).aspx
プロジェクト全体のバージョン管理として見た場合、svnよりgitに近い、履歴が分岐、統合できる方式のバージョン管理ソフト。(svnの履歴は一直線。ブランチは一直線の履歴の内部に存在する)
不評なのは、重かったり、マージがうまくいかなかったり、操作タイミングによりファイルが破損したりという問題があるからであり、(整理しきれてはいないが)概念としてはそこまで問題あるバージョン管理方式ではなさそうと感じた。
最終版が2005年10月リリース、2012年10月にサポート終了済み。

基本的なバージョン管理の概念

VSSでは、ファイル単位でバージョン管理を行う。
ファイル単位でコミット(チェックイン)を行うため、プロジェクト全体でのバージョンという実体は存在しない。
ただし、ファイル単位のバージョン履歴をまとめたものをプロジェクト全体の履歴とみなして操作することはできる。

ある時点のスナップショット保存

ラベルという概念で、ある時点のスナップショットを保存できる。
一般的なバージョン管理システムで言うタグである。
また、日時を指定してその時点の作業コピーを取得することもできる。

修正の衝突の処理方法

同じファイルに対する修正は、ファイルをチェックアウトした1人しか行えないという方式で修正の衝突を防ぐ。(オプションとして同時チェックアウトもある)

履歴の管理

ロールバックという操作で、ある時点以降のリビジョンをレポジトリから破棄することができる。
git reset --hard OldCommitId に近い操作。
ロールバックの取り消しもできる。(git reset --hard orig_head)

ブランチ

共有という操作で、1つのファイル履歴を2つ以上のプロジェクトに所属させることでブランチ的な動作を実現する。
ただし一般的なブランチと違い、この状態ではプロジェクトAで行った更新が、プロジェクトBにも反映される。
一般的なブランチのように独立した履歴を持ちたい場合、分岐という操作を行ってプロジェクトAとプロジェクトBで別の履歴を持つように明示的に指示する必要がある。
子ブランチから親ブランチへ修正をマージするという操作も一応ある。
VSSでは「ブランチ」ではなく「分岐」という和訳が採用されている。

レポジトリの管理方法

レポジトリは共有フォルダとしてファイルサーバに置いて、それを参照する。